有人可以提出为什么会这样吗...
我有一些代码可以漂亮地打印一些 JSON。为此,我使用了 Gson library。 .
然而,虽然这样通常效果很好,但有些字符似乎无法正确显示。这是演示问题的一段简单代码:
//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 呈现为 <script/> tag
,这可能会导致麻烦在 HTML 页面中不使用额外的 <![CDATA[ ... ]]>
标签。
通过查看 JsonWriter
class 的代码,您可以了解它是如何工作的,以及转义了哪些其他字符。 .
关于java - 使用 Gson pretty-print JSON 字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020894/