I wrote a code of java which adds the data present in array to an existing json file.
This is my code
public static void writeInJsonFile() {
for(int i = 0; i < list.size(); i) {
String path = list[i][0];
String id = list[i][2];
String value = list[i][1];
JSONObject root = mapper.readValue(new File(path), JSONObject.class);
JSONObject valueJson = new JSONObject();
valueJson.put("value", value);
JSONObject idJson = new JSONObject();
idJson.put("id", valueJson);
root.put("system", idJson);
FileWriter writer = new FileWriter(path);
writer.write(String.valueOf(root));
writer.close();
}
}
List<List> list = [["FileName1","Value1","Id1"],[],[],[]...] It is writing the code at required path, but not appending it. Previous data gets deleted.
Expected Results
FileName1.json
{
"system" : {
id1 : {
"value" : value
},
id3 : {
"value" : value3
},
id2 : {
"value" : value2
}
}
}
FileName2.json
{
"system" : {
id4 : {
"value" : value4
},
id6 : {
"value" : value6
}
}
}
Actual Results
FileName1.json
{
"system" : {
id2 : {
"value" : value2
}
}
FileName2.json
{
"system" : {
id6 : {
"value" : value6
}
}
How should i solve this problem ??
CodePudding user response:
You aren't collecting your JSONObject idJson = new JSONObject();
before trying to add a new value into it. So each time you open the file, you "erase" the old content.
You can do, subject to the existence of the "system" field (Make sure to check it first).
JSONObject idJson = root.getJSONObject("system");