繁体   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