gpt4 book ai didi

java - 为什么 Gson 会漂亮地打印到控制台,而不是文件?

转载 作者:行者123 更新时间:2023-11-29 07:25:16 26 4
gpt4 key购买 nike

我有一个类,我们称它为 Cls,其中包含一些值。当我使用用 GsonBuilder.setPrettyPrinting().create() 声明的 Gson 实例并使用它来序列化 Cls 对象并将生成的 JSON 字符串打印到控制台时,我得到了很好的格式,如下所示:

{
"foo":"bar",
"foo2":["b1","b2"],
"foo3":12
}

一切都很好,但是当我随后创建一个 JsonWriter(从具有绝对路径的 FileWriter)并将 Gson 实例的 toJson(Object, Class, JsonWriter) 方法与 Cls 一起使用时,结果文件的格式不正确。它看起来像这样:

{"foo":"bar","foo2":["b1","b2"],"foo3":12}

这破坏了 pretty-print 的全部意义。它为什么这样做,我怎样才能让它停止?

最佳答案

大概你正在使用这样的东西

Gson gson = new GsonBuilder().setPrettyPrinting().create();

try (FileWriter fileWriter = ...) {
gson.toJson(new Example(), Example.class, new JsonWriter(fileWriter));
}

JsonWriter 不是从 Gson 对象创建的,因此未配置为 pretty-print 。相反,您可以使用 newJsonWriterGson 对象中检索一个 JsonWriter 实例。

gson.toJson(new Example(), Example.class, gson.newJsonWriter(fileWriter));

哪个

Returns a new JSON writer configured for the settings on this Gson instance.

这个实例将 pretty-print 。

您也可以在自己的实例上设置缩进

JsonWriter jsonWriter = new JsonWriter(fileWriter);
jsonWriter.setIndent(" ");
gson.toJson(new Example(), Example.class, jsonWriter);

关于java - 为什么 Gson 会漂亮地打印到控制台,而不是文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54448533/

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