簡體   English   中英

為什么Gson會漂亮地打印到控制台,而不打印到文件?

[英]Why will Gson pretty-print to the console, but not the file?

我有一個類,我們稱它為Cls,其中包含一些值。 當我使用通過GsonBuilder.setPrettyPrinting().create()聲明的Gson實例並使用它來序列化一個Cls對象並將結果JSON字符串打印到控制台時,我得到了很好的格式,如下所示:

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

一切都很好,但是當我然后創建一個JsonWriter(從具有絕對路徑的FileWriter)並使用Cls的Gson實例的toJson(Object, Class, JsonWriter)方法時,生成的文件格式不正確。 相反,它看起來像這樣:

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

這打敗了漂亮印刷的全部要點。 為什么這樣做,如何停止?

想必您正在使用類似這樣的東西

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

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

JsonWriter不是從Gson對象創建的,因此未配置為漂亮打印。 您可以改為使用newJsonWriterGson對象檢索JsonWriter實例。

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

哪一個

返回為該Gson實例上的設置配置的新JSON編寫器。

該實例將打印精美。

您還可以在自己的實例上設置indent

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM