一:java后台的写法:
//首先肯定是要先把fastjson那个包弄来引好,具体操作百度上很多。。。
JSONArray json = new JSONArray();//json数组
JSONObject j = new JSONObject();//JSONObject对象
DocRelease[] releasedocs =getDocs(userOid);//假设这个是有多条公文的数组
for (DocRelease d : releasedocs) {
JSONObject jsonObject1 = new JSONObject();//临时创建一个JSONObject对象存每个键值对
jsonObject1.put("docId", d.getHandle());
jsonObject1.put("createDate", d.getCreateDate().toString());
jsonObject1.put("title", d.getDocTitle());
json.add(jsonObject1);最后把所有键值对的JSONObject全加到json数组里
}
j.put("docList", json);//最后把这个json数组放到另一个JSONObject里面并通过j.toString()进行序列化等操作传值。(序列化好像只能这么传值,不能直接把对象传过去)
然后接收:JSONObject rjo = JSONObject.parseObject(result);//这里的result就是j.toString();
JSONArray workItems = rjo.getJSONArray("docList");//取出json数组
然后for循环遍历workItems:
JSONObject workItem = JSONObject.parseObject(workItems.get(i).toString());//单个JSONObject 对象,里面存有多个键值对。
String groupName = workItem.getString("groupName");//然后就能取到具体某个属性了!
二:在js的写法:
先给大家看一段json的String:仔细看结构,它是有个Notifications头的,就相当于一个集合(数组)的名称,然后便是这个集合(数组),标志是啥呢,[ ],是的没错! 然后[ ]里面呢,有三个{ },每个{ }就相当于一个JSONObject,//通过Notifications.get(i)来取每个对象。
var jsonStr = "{\"Notifications\":[{\"time\":\"2017-9-22 14:15\",\"content\":\"测试推送1\"},{\"time\":\"2017-9-22 14:15\",\"content\":\"测试推送2\"},{\"time\":\"2017-9-22 14:15\",\"content\":\"测试推送3\"}]}";
var obj = JSON.parse(jsonStr);
var NFjsonarray = obj.Notifications;//json对象是可以直接.key获取value的。js这么写的,不知道 java后台可不可以这么写
var myNotificationData = me.comp("myNotificationData");
myNotificationData.clear();
for (var i = 0; i < NFjsonarray.length; i++) {
myNotificationData.add({
pid : i,
time : NFjsonarray[i].time,
content : NFjsonarray[i].content
});
}