[英]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
對象創建的,因此未配置為漂亮打印。 您可以改為使用newJsonWriter
從Gson
對象檢索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.