簡體   English   中英

使用Gson來打印JSON字符串的問題

[英]Issues with using Gson to pretty-print JSON String

有人可以建議為什么會發生這種情況......

我有一些代碼可以打印一些JSON。 為此,我正在使用Gson庫

但是,雖然通常效果很好,但某些字符似乎沒有正確顯示。 這是一段簡單的代碼,演示了這個問題:

//Creating the JSON object, and getting as String:
JsonObject json = new JsonObject();
JsonObject inner = new JsonObject();
inner.addProperty("value", "xpath('hello')");
json.add("root", inner);
System.out.println(json.toString());

//Trying to pretify JSON String:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser parser = new JsonParser();
JsonElement je = parser.parse(json.toString());
System.out.println(gson.toJson(je));

上面代碼的輸出是:

{"root":{"value":"xpath('hello')"}}
{
  "root": {
    "value": "xpath(\u0027hello\u0027)"
  }
}

我怎么能解決上述問題?

使用此代碼創建Gson對象:

Gson gs = new GsonBuilder()
    .setPrettyPrinting()
    .disableHtmlEscaping()
    .create();

disableHtmlEscaping()方法告訴 gson不要轉義HTML字符,例如<>&= ,以及導致你麻煩的單引號: '

請注意,如果您將這種未轉義的JSON渲染到HTML頁面中的<script/> tag而不使用其他<![CDATA[ ... ]]>標記,則可能會造成麻煩。

通過查看JsonWriter的代碼,您可以看到它是如何工作的,以及其他字符是否被轉義。

暫無
暫無

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

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