- 由Map组装数据内容,最后通过JSONObject与JSONArray来生成json
- 直接通过JSONObject与JSONArray组装数据并生成json
Map<String, Object> data = new ArrayMap<>();
List<Map<String, String>> maps = new ArrayList<>();
try {
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < 2; i++) {
Map<String, String> map = new ArrayMap<>();
map.put("name", "jack");
map.put("phone", "12306");
maps.add(map);
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "jack");
jsonObject.put("phone", "12306");
jsonArray.put(jsonObject);
}
data.put("data", new JSONArray(maps));
Logs.d(new JSONArray(maps));
Logs.d(new JSONObject(data));
Logs.d(new JSONObject().put("data", jsonArray.toString()));
} catch (JSONException e) {
e.printStackTrace();
}
通过上述代码测试发现:
- 两种方式最终生成的json是一致的
- 其中装填数据的方式不同,最终生成的json格式会不同
此种是上述代码map方式生成的json (标准格式的json)
{"data":[{"name":"jack","phone":"12306"},{"name":"jack","phone":"12306"}]}
此是JSONObject方式生成的json。(非标准格式的json)
{"data":"[{\"name\":\"jack\",\"phone\":\"12306\"},{\"name\":\"jack\",\"phone\":\"12306\"}]"}
注意:有区别的原因不在map与JSONObject的区别,而是在于装填 data 字段时,其value的put方式。请注意一个是直接将json数组对象直接put进去,一个是将json数组作为一个字符串put进去,进而导致了两种不同的结果。
网友评论