有人可以建议为什么会这样吗…
我有一些代码可以漂亮地打印一些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
Gson gs = new GsonBuilder() .setPrettyPrinting() .disableHtmlEscaping() .create();
该disableHtmlEscaping()方法 告诉 gson不要逃避HTML字符,如<,>,&,=,并造成你的麻烦一个单引号:'。
disableHtmlEscaping()
gson
<
>
&
=
'
请注意,如果您<script/> tag在不使用其他<![CDATA[ ... ]]>标签的情况下将此类未转义的JSON呈现到HTML页面中,则可能会造成麻烦。
<script/> tag
<![CDATA[ ... ]]>
通过查看JsonWriterclass的代码,您可以了解它的工作原理以及其他字符是否转义。
JsonWriter