美文网首页
关于生成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