JSON简单覆盖

JSONSimple Overwriting

我正在尝试遍历哈希映射并根据值创建 json 字符串。我正在使用 JSONSimple 库来执行此操作。我有我想要的结构,但值被覆盖了。我最终得到的结构是

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

但是 JSON 中应该有额外的值。仅包含哈希映射的最后一行。我是否需要添加另一个要写入的 JSON 对象?

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);

    }

您总是使用 "new_id" 作为 "obj.put" 行的键。对于第一个映射条目,您在 JSON 对象上设置该键的值。对于每个后续条目,您将替换该键的值,而不是添加新键。这就是为什么只有地图中的最后一个条目在 JSON.

中表示

我不确定你到底想完成什么,但你可能需要在循环中每次都使用不同的键或者使用 JSONA​​rray 而不是 JSON对象,这样你就根本不需要钥匙了。