通过JSON保存多表单数据
2016-11-22 21:50
197 查看
一直觉得自己很懒,懒得读书,懒得写博客。不过最近对文字似乎有了一丢丢兴趣,想读点书了,想写点东西了。世间很多事都不能永恒,青山不能,绿水不能,人更不能,或许只有文字能。文字不管是刻在龟骨上,刻在竹简上,写在帛书上,写在白纸上,还是以数据的形式存储在磁盘上,都有着她存在的意义,都有机会能够永恒地传承下去,被更多的人所看见,所评论…
![](https://img-blog.csdn.net/20161122172552891)
因为表设计的原因,只用一个source(下载来源)字段标识是哪个应用市场的下载量,后来看到录入页面时,突然觉得这样的表设计将这简单的录入功能整得很复杂了,不仅查询时要分App类型、系统类型、统计类型,还需要分下载来源,而且新增的时候,就是一次性添加几十条数据。
但是后来又想想,若是在表里面每一个下载来源都加一个字段的话,这样又有些不妥,到时若要新增一个应用市场,还得改动表结构。想来想去,只觉得这需求真扯Dan,本来这几个APP就没多少下载量,而且应用市场也提供了相关数据和统计,有必要再录进后台,还自己做报表吗?
不过功能还是要做的,数据展示倒问题不大,但数据保存时,开始确实有些懵B了,虽然是一次性保存几十条数据,但后台可以批量新增和修改,而且传递的都是些数字,效率当然不成问题。不过怎么将这几十条数据传到后台呢?
一开始想,这些数据就像是个列表嘛,那就是多个form表单嘛,一次提交一个表单没问题,但是一次性提交几十个表单,这要上天吗。后来想了想,能不能直接提交一个列表到后台,或者说是Map集合,于是自然而然地想到了JSON了。
JSON确实很强大,我觉得没有哪个数据交换语言比她漂亮,她确实生得很漂亮,看一眼便看得出来。
其它就不多说了,直接贴出部分相关代码吧。
后台主要借助FastJson解析前端传递的JOSN字符串,然后根据其数据结构取出数据。
不过多少还是说一句;
多读书,多睡觉,第一篇博客,请多多关照。
场景
前段时间遇到一个奇葩的需求,想要将各大应用市场的APP下载数据录入到自己系统,录入页面如下:因为表设计的原因,只用一个source(下载来源)字段标识是哪个应用市场的下载量,后来看到录入页面时,突然觉得这样的表设计将这简单的录入功能整得很复杂了,不仅查询时要分App类型、系统类型、统计类型,还需要分下载来源,而且新增的时候,就是一次性添加几十条数据。
但是后来又想想,若是在表里面每一个下载来源都加一个字段的话,这样又有些不妥,到时若要新增一个应用市场,还得改动表结构。想来想去,只觉得这需求真扯Dan,本来这几个APP就没多少下载量,而且应用市场也提供了相关数据和统计,有必要再录进后台,还自己做报表吗?
不过功能还是要做的,数据展示倒问题不大,但数据保存时,开始确实有些懵B了,虽然是一次性保存几十条数据,但后台可以批量新增和修改,而且传递的都是些数字,效率当然不成问题。不过怎么将这几十条数据传到后台呢?
一开始想,这些数据就像是个列表嘛,那就是多个form表单嘛,一次提交一个表单没问题,但是一次性提交几十个表单,这要上天吗。后来想了想,能不能直接提交一个列表到后台,或者说是Map集合,于是自然而然地想到了JSON了。
JSON确实很强大,我觉得没有哪个数据交换语言比她漂亮,她确实生得很漂亮,看一眼便看得出来。
其它就不多说了,直接贴出部分相关代码吧。
前端
主要代码如下:// Map用于存放要保存的数据,拼接Map数据的就不贴出来了(map中这些key主要是区分统计类型和App类型及系统类型) var savaAppMap = { "appActiveData" : { "1-1" : [0, 0, 0, 0], "1-2" : [0, 0, 0, 0], "2-1" : [0, 0, 0, 0], "2-2" : [0, 0, 0, 0] }, "appDownloadData" : { "1-1" : { "4" : [0, 0], "5" : [0, 0], ..... }, "1-2" : { "4" : [0, 0], "5" : [0, 0], ..... }, "2-1" : { "4" : [0, 0], "5" : [0, 0], ..... }, "2-2" : { "4" : [0, 0], "5" : [0, 0], ..... } } }; // 将map数据转成json字符,以便提交到后台 var mapStr = JSON.stringify(eval(savaAppMap)); var url = "www.xxx.com/xxxx/xxxxx"; var param = "mapStr=" + mapStr; $.ajax({ type : "POST", async : true, cache : false, url : url, data : param, dataType : "json", success : function(returnData) { ..... }, error : function() { ..... } });
后台
主要代码如下:// 将json字符串转换成json对象(此处用的是阿里的FastJson) JSONObject appData = JSONObject.parseObject(mapStr); // 这里可以将appData当成Map JSONObject appActiveData = appData.getJSONObject("appActiveData"); // appActiveData自然也可以当做Map JSONArray appActiveArray = null; // 遍历方式也与Map极像 for(String key : appActiveData.keySet()) { // 取出数组,JSONArray算是FastJson的数组,取值方式和数组却不一样,他自有一些方法,比如取下标为0的int类型:appActiveArray.getInteger(0)... appActiveArray = appActiveData.getJSONArray(key); // 剩下都是一些数据拼接,通过实体组装成集合后再进行批量新增 ..... }
后台主要借助FastJson解析前端传递的JOSN字符串,然后根据其数据结构取出数据。
总结
其实没啥好总结的;不过多少还是说一句;
多读书,多睡觉,第一篇博客,请多多关照。
相关文章推荐
- 关于flask表单验证json数据不通过总是返回False的解决方法(flask wtforms: Validation always false)
- 通过jquery的serializearray处理表单数据成json格式,并提交到后台处理
- 将表单序列化之后变成的json格式的数据无法通过Ajax发送到后台的解决
- 如何通过表单上传图片数据,PHP后端获取并且保存文件数据
- 通过jquery的serializearray处理表单数据成json格式,并提交到后台处理
- Android学习第七天————将数据保存为JSON格式,通过JSONObject和JSONReader来解析JSON数据
- Android 通过JSON保存数据
- JQGrid通过json请求nodejs数据,表格信息保存在mysql数据库中
- ######保存角色,add表单页面Ajax传参给action,多个集合属性,【较为复杂的页面传参(封装ajax json参数)】:注意表单数据序列化,jquery遍历,json对象转String
- php通过post将表单数据保存到数据库实例
- jQuery通过ajax获得后台json数据给form表单赋值
- 当您通过使用 InfoPath 2010 表单连接到 Web 服务时沙盒中处理的代码包含的、 不返回的数据或您收到一条错误消息
- 通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据
- js下利用userData实现客户端保存表单数据
- js下利用userData实现客户端保存表单数据
- 不用Cookie,如何保存表单所填写的数据
- 通过cajun修改json的数据
- 通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据
- Jquery 局部刷新及 表单取值赋值 处理返回json数据 一些基本操作
- PHP通过另类方法提供JSON格式的数据