当前位置: 首页 > 面试题库 >

使用Gson漂亮地打印JSON字符串的问题

商飞翮
2023-03-14
问题内容

有人可以建议为什么会这样吗…

我有一些代码可以漂亮地打印一些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字符,如<>&=,并造成你的麻烦一个单引号:'

请注意,如果您<script/> tag在不使用其他<![CDATA[ ... ]]>标签的情况下将此类未转义的JSON呈现到HTML页面中,则可能会造成麻烦。

通过查看JsonWriterclass的代码,您可以了解它的工作原理以及其他字符是否转义。



 类似资料:
  • 下面是我的例子: 如何为JSONARRAY启用漂亮的打印? 我认为这足以解释我的问题,但是这里有一些bla bla bla bla bla bla因为stackoverflow问我更多的细节,让我发布问题。

  • 问题内容: 有人知道在Go中漂亮地打印JSON输出的简单方法吗? 库存的 http://golang.org/pkg/encoding/json/ 软件包似乎不包含此功能 (编辑:确实如此,请参见接受的答案),而且快速的Google并没有发现任何明显的问题。 我正在寻找的用途既可以打印出JSON 的结果,又可以从任何地方格式化一个充满JSON的字符串,因此出于调试目的而更易于阅读。 问题答案: 通

  • 问题内容: 这似乎是一个已解决的问题,但我无法找到解决方案。 基本上,我读取了一个JSON文件,更改了密钥,然后将新的JSON写回到同一文件。都可以,但是我松了JSON格式,所以,而不是: 我懂了 Node.js中是否可以将格式良好的JSON写入文件? 问题答案: 的第三个参数定义用于漂亮打印的空白插入。它可以是字符串或数字(空格数)。Node可以使用写入您的文件系统。例: 请参阅MDN上的JSO

  • 有人知道一种简单的方法可以在Go中漂亮地打印JSON输出吗? 股票 http://golang.org/pkg/encoding/json/软件包似乎不包含此功能 (编辑:是的,请参见公认的答案),快速的谷歌搜索不会发现任何明显的问题。 我正在寻找的用法都是漂亮的打印json的结果。封送,然后格式化来自任何地方的充满JSON的字符串,因此更容易出于调试目的进行读取。

  • 问题内容: 如何以易于阅读的格式(对人类读者而言)显示JSON?我主要是在寻找缩进和空格,甚至可能是颜色/字体样式/等。 问题答案: 漂亮打印是在中本地实现的。第三个参数启用漂亮的打印并设置要使用的间距: 如果需要语法高亮显示,则可以使用一些正则表达式魔术,例如: 在这里查看操作:jsfiddle 或下面提供的完整代码段:

  • 问题内容: 我正在构建一个PHP脚本,该脚本将JSON数据提供给另一个脚本。我的脚本将数据构建到一个大的关联数组中,然后使用来输出数据。这是一个示例脚本: 上面的代码产生以下输出: 如果您的数据量很少,那就太好了,但是我希望遵循以下几点: 有没有办法在PHP中做到这一点而又没有丑陋的破解?似乎有人在Facebook上找到了答案。 问题答案: PHP 5.4提供了用于调用的选项。 http://ph