JSONSimple覆盖

时间:2016-10-10 20:32:10

标签: java json json-simple

我试图遍历哈希映射并从值创建一个json字符串。我使用JSONSimple库来做到这一点。我有我想要的结构,但值被覆盖。我最终得到的结构是

{
   "new_id":{
      "coordinates_list":{
         "Coordinates: ":[
            "lat: 27.0",
            "lon: 28.0"
         ]
      },
      "t0vhf40cv86t":[
         "123"
      ]
   }
}

但是JSON中应该有其他值。仅包含哈希映射的最后一行。我是否需要添加我写的另一个JSONObject?

JSONObject obj = new JSONObject(); // final json object written out

    double lat = 20.00; // test data
    double lon = 21.00; // test data
    for (Map.Entry<String, List<String>> entry : data.entrySet()){
        JSONObject childObj = new JSONObject();
        JSONObject coordObj = new JSONObject();

        JSONArray entities = new JSONArray();
        JSONArray coordinates = new JSONArray();

        String key = entry.getKey();
        List<String> values = data.get(key);
        for(String value : values){
            entities.add(value);
        }
        childObj.put(key,entities);

        // increments the test data 
        lat = lat +1;
        lon = lon + 1;

        coordinates.add("lat: " + lat);
        coordinates.add("lon: " + lon);

        coordObj.put("Coordinates: " ,coordinates);

        childObj.put("coordinate list ", coordObj);

        obj.put("new_id" , childObj);

    }

1 个答案:

答案 0 :(得分:2)

您一直在使用&#34; new_id&#34;作为&#34; obj.put&#34;的关键线。对于第一个映射条目,您可以在JSON对象上设置该键的值。对于每个后续条目,您将替换该键的值,而不是添加新键。这就是为什么只有地图中的最后一个条目在JSON中表示。

我不确定你要完成的是什么,但是你可能需要在每次循环时使用不同的密钥,或者使用JSONArray代替JSONObject,这样你就不会#39 ;根本不需要钥匙。