想要的数据格式为:
[{"第一章":[{"1_第一节":["sectionId": 1]},{"1_第二节":[sectionId": 2]} },
{"第二章":[{"2_第一节":["sectionId": 3]},{"2_第二节":[sectionId": 4]]} }]
Map<String,Object> dataMap = new HashMap<>();
Map<String,Object> sectionMap = new HashMap<>();
sectionMap.put("1_第一节", new HashMap<String,Integer>().put("sectionId",1));
sectionMap.put("1_第二节", new HashMap<String,Integer>().put("sectionId",2));
dataMap.put("第一章", sectionMap);
此时dataMap中添加sectionMap,会因sectionMap的改变dataMap也会变化,它只是引用了sectionMap,而不是将其中的值传了进去,能想象到的一种方法是用jsonObject。(可能应该有其它方法)可能在前后台数据传递json类数据时,jsonobject可能更方便些。
发现一个有趣的现象,原本以为第一个花费的时间会比第二种少,没想到正好相反。具体原因不知道,我猜是第一种方法,是在执行add方法时还要在执行一个discard方法,这样会占用更多的内存,又或许是因为java里的某种机制原因。
// 花费时间:446 470 409 505 // JSONObject jsonObject = (JSONObject) jsonArray.get(i); // jsonArray1.add(jsonObject.discard("contents")); // // 花费时间:410 387 399 // JSONObject jsonObject = (JSONObject) jsonArray.get(i); // JSONObject jsonObject2 =jsonObject.discard("contents"); // jsonArray1.add(jsonObject2);