gpt4 book ai didi

java - 如何更改 .JSON 文件中的某些值,然后在保留 JSON 格式的情况下将其写回? ( java )

转载 作者:太空宇宙 更新时间:2023-11-04 13:53:33 25 4
gpt4 key购买 nike

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 上快速搜索发现我认为可以解决您的问题。

Solution

关于java - 如何更改 .JSON 文件中的某些值,然后在保留 JSON 格式的情况下将其写回? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30057378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com