JSON 示例文件包含:
{
"1st_key": "value1",
"2nd_key": "value2",
"object_keys": {
"obj_1st": "value1",
"obj_2nd": "value2",
"obj_3rd": "value3",
}
}
我使用此 StringBuilder 方法将 JSON 文件读入字符串,以便将换行符添加到字符串本身中。因此该字符串看起来与上面的 JSON 文件一模一样。
public String getJsonContent(String fileName) {
StringBuilder result = new StringBuilder("");
File file = new File(fileName);
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
result.append(line).append("\n");
}
scanner.close();
} catch (IOException e) {
e.printStackTrace();
}
return result.toString();
}
然后,我使用 MongoDB API(使用 DBObject、BasicDBObject 和 util.JSON)将 JSON 文件转换为对象,并调出需要更改的对象部分,即“object_keys”:
File jsonFile = new File(C:\\example.json);
String jsonString = getJsonContent(jsonFile.getAbsolutePath());
DBObject jsonObject = (DBObject)JSON.parse(jsonString);
BasicDBObject objectKeys = (BasicDBObject) jsonObject.get("object_keys");
现在我可以使用 PUT 方法将新值写入对象,如下所示:
objectKeys.put("obj_1st","NEW_VALUE1");
objectKeys.put("obj_2nd","NEW_VALUE2");
objectKeys.put("obj_3rd","NEW_VALUE3");
!不需要以下部分,请查看下面我的答案。
更改对象后,我需要将其写回到json文件中,因此我需要将对象转换为字符串。有两种方法可以做到这一点,其中一种有效。
String newJSON = jsonObject.toString();
or
String newJSON = JSON.serialize(jsonObject);
然后我使用 PrintWriter 将内容写回文件
PrintWriter writer = new PrintWriter(C:\\example.json)
writer.print(newJSON);
writer.close();
我现在面临的问题是写入的字符串是在一行中,没有任何格式。一路上的某个地方它丢失了所有换行符。所以它基本上看起来像这样:
{"1st_key": "value1","2nd_key": "value2","object_keys": { "obj_1st": "NEW_VALUE1","obj_2nd": "NEW_VALUE2","obj_3rd": "NEW_VALUE3", }}
我需要以与开头所示相同的格式写回 JSON 文件,保留所有表格、空格等。
这有可能吗?
最佳答案
当您想要按照您所说的方式格式化某些内容时,即以一种漂亮/美丽的方式写入文件。例如:输出漂亮的json。在 Google 上快速搜索发现我认为可以解决您的问题。
关于java - 如何更改 .JSON 文件中的某些值,然后在保留 JSON 格式的情况下将其写回? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30057378/