您的位置:首页 > Web前端 > JavaScript

通过JSON保存多表单数据

2016-11-22 21:50 197 查看
一直觉得自己很懒,懒得读书,懒得写博客。不过最近对文字似乎有了一丢丢兴趣,想读点书了,想写点东西了。世间很多事都不能永恒,青山不能,绿水不能,人更不能,或许只有文字能。文字不管是刻在龟骨上,刻在竹简上,写在帛书上,写在白纸上,还是以数据的形式存储在磁盘上,都有着她存在的意义,都有机会能够永恒地传承下去,被更多的人所看见,所评论…

场景

前段时间遇到一个奇葩的需求,想要将各大应用市场的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字符串,然后根据其数据结构取出数据。

总结

其实没啥好总结的;

不过多少还是说一句;

多读书,多睡觉,第一篇博客,请多多关照。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JSON JAVA JavaScript
相关文章推荐