有人可以建议为什么会发生这种情况......
我有一些代码可以打印一些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)"
}
}
我怎么能解决上述问题?
答案 0 :(得分:27)
使用此代码创建Gson
对象:
Gson gs = new GsonBuilder()
.setPrettyPrinting()
.disableHtmlEscaping()
.create();
disableHtmlEscaping()
方法告诉 gson
不要转义HTML字符,例如<
,>
,&
,{{ 1}},以及导致您遇到麻烦的单引号:=
。
请注意,如果您将这种未转义的JSON渲染到HTML页面中的'
而不使用其他<script/> tag
标记,则可能会造成麻烦。
通过查看JsonWriter
class的代码,您可以查看其工作原理以及其他字符的转义。