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.
中表示
我不确定你到底想完成什么,但你可能需要在循环中每次都使用不同的键或者使用 JSONArray 而不是 JSON对象,这样你就根本不需要钥匙了。
我正在尝试遍历哈希映射并根据值创建 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.
中表示我不确定你到底想完成什么,但你可能需要在循环中每次都使用不同的键或者使用 JSONArray 而不是 JSON对象,这样你就根本不需要钥匙了。