最近写项目遇到了一个问题,为了方便维护、编写,所以写了一个JavaScript的对象数组。然而,上网找了很多博客都没有找到简单、有效的方法来解决后台传输、识别的问题。
var arr = new Array();
function createObject(name, value ){
var obj = new Object();
obj.name = name;
obj.value = value;
return obj;
}
for (var i = 0; i < 5; i++) {
arr[i] = createObject("No." + i, "" + i);
}
此时的arr并不能直接用 JSON.stringify 函数来变成Json,即使转换成了Json传给了后台,后台也会因为无法解析而报错。
// JSON.stringify(arr)打印出来是
[{"name":"No.0","value":"0"},{"name":"No.1","value":"1"},{"name":"No.2","value":"2"},{"name":"No.3","value":"3"},{"name":"No.4","value":"4"}]
这里博主有两种解决的方案,第一种就是采用字符串拼接的方式拼成后台可以识别的方式字符串格式、或者Json字符串。
另外一种就是构造一个新的Json对象,把数组对象给包含进来传递
前台代码
//前台
var json = {};
json.trans = arr;
//传递json
JSON.stringify(json);
后台处理代码
//后台伪代码
public ArrayList dealJson(String jsonString) {
ArrayList subList = new ArrayList();
JSONObject jsonObject = JSONObject.fromObject(jsonString);
JSONArray jsonArray = jsonObject.getJSONArray("trans");
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jObject = jsonArray.getJSONObject(i);
Example exam = (Example) JSONObject.toBean(jObject, Example.class);
//Example是对应前台createObject的后台对象
subList.add(exam);
}
return subList;
}
目前博主还正在学习的过程中,对Json也是浅尝辄止,只会上面两种方法,如果你有更好的方法,欢迎留言。