java - 使用 Gson pretty-print JSON 字符串的问题

标签 java json gson

有人可以提出为什么会这样吗...

我有一些代码可以漂亮地打印一些 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/

相关文章:

java - .war 文件是否包含用于在容器中部署的所有依赖项 jar?

java - 数据库表中的实体类

java - Java中涉及 boolean 变量的无限while循环

c# - 响应正文 json 包含转义字符串

android - 使用不提供方法访问权限的依赖项导入 GSON

java - 设计为支持根据对象类型进行请求处理

java - 下面提到的使用 org.springframework.web.client.RestTemplate RestTemplate 的潜在问题是什么?

javascript - 如何在 JavaScript/AngularJS 中获取 i18n 文件中的数组长度?

json - 如何将 shell 脚本用作 Chrome Native Messaging 主机应用程序

java - 你怎么能像 Jackson 的 @JsonAnySetter 一样得到 Gson 中无法识别的 JSON 字段列表?