1

我们正在读取文件更改内容并写回相同的位置。

java - 如何在java/only特定属性中对JSON数组应用缩进?

源代码:

import com.google.gson.JsonElement;
import com.google.gson.internal.Streams;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;

String file="D:\\Documents\\read.json";     
JsonElement root = Streams.parse(new JsonReader(new FileReader(file)));
// changing the json values here
try (Writer writer = new FileWriter(file)) {
    JsonWriter jsonWriter = new JsonWriter(writer);
    jsonWriter.setIndent("\t");
    Streams.write(root, jsonWriter);
    jsonWriter.flush();
}  catch (IOException ioe) {
    ioe.printStackTrace();
}

我们有什么:

{
  "array": ["element 1","element 2","element 3" ],
  "object": {
    "property1": "value1",
    "property2":"value2"
  }
}

生成的代码:

{
    "array": [
        "element 1",
        "element 2",
        "element 3"
    ],
    "object": {
        "property1": "value1",
        "property2": "value2"
    }
}

我们需要的

{
  "array": ["element 1","element 2","element 3" ],
  "object": {
    "property1": "value1",
    "property2":"value2"
  }
}
4

1 回答 1

0

通常的 JSON 序列化程序不提供选择性缩进。大多数提供针对人类读者的“漂亮打印”(生成并非全部在一行上的输出)。一般来说,这甚至不需要,因为不同的输出在语义上是相等的,而 JSON 是供机器读/写的,而机器不关心缩进。仅在需要人工调试时才支持漂亮打印。

我能提供的唯一解决方案是编写自己的序列化程序,但这并不像看起来那么容易,除了最简单的情况。

于 2021-04-22T17:12:59.483 回答