美文网首页
关于生成json字符串

关于生成json字符串

作者: 钦_79f7 | 来源:发表于2019-12-20 16:35 被阅读0次
  • 由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进去,进而导致了两种不同的结果。

相关文章

网友评论

      本文标题:关于生成json字符串

      本文链接:https://www.haomeiwen.com/subject/jleinctx.html