如何在java中对数组json应用indent

chhkpiq4  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(309)

我们正在读取文件,更改内容并写回同一位置。
如何在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"
  }
}
chy5wohz

chy5wohz1#

通常的json序列化程序不提供选择性缩进。大多数提供“漂亮的打印”(生成的输出不是全部在一行)针对人类读者。一般来说,甚至不需要这样做,因为不同的输出在语义上是相等的,json意味着机器可以读/写,而机器不关心缩进。只有在人类需要调试的情况下,才支持漂亮打印。
我能提供的唯一解决方案是编写自己的序列化程序,但这并不像看上去那么容易,除了最简单的情况。

相关问题