【问题标题】:Pretty print for JSON in Java works fine for the console, but in browser it does not workJava 中 JSON 的漂亮打印适用于控制台,但在浏览器中它不起作用
【发布时间】:2019-10-16 10:34:16
【问题描述】:

我有一个 JSON 文件,我想从 Java Spring Boot 中创建的 rest 控制器中的 API 调用中检索其内容。 我将 .json 文件的内容转换为 String 并使用以下方法(其中之一)进行漂亮的打印。 如果我 system.out.println() 输出,它会打印得很漂亮,但在浏览器中它会粗略地显示并且没有缩进。我有更多方法:

String content = new String(Files.readAllBytes(resource.toPath()));

Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(content);
String prettyJsonString = gson.toJson(je);
System.out.println(prettyJsonString);

return prettyJsonString;

另一种方法在浏览器中返回相同的丑陋输出,但它也添加了“/r/n”:

ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
String prettyJsonString = mapper.writeValueAsString(content);

return prettyJsonString;

谁能帮我在浏览器中获得漂亮的输出?

【问题讨论】:

  • 我看了,问题没有共同点:(
  • @Maria1995 据我记得在浏览器中你应该使用 JSON 增强器。在 Chrome 中,您可以使用 JSON 查看器。
  • 您可以使用浏览器扩展在浏览器中漂亮地打印 JSON。
  • 您是否尝试过将漂亮的 JSON 字符串放入预先格式化的文本标签中?类似...<pre> prettyJsonString here </pre>

标签: java json gson


【解决方案1】:

控制台输出和 HTML 输出的格式化字符串是两个非常不同的任务。方法setPrettyPrinting() 用于控制台打印。 HTML 浏览器将忽略 "\n" 符号,并且不会考虑将多个空格替换为单个空格等。通常,格式化输出通常是客户端任务。但是我曾经遇到过这个问题并编写了一个方法,该方法采用控制台格式的字符串并将其转换为 Html 格式的字符串。例如,它将所有“\n”符号替换为 br Html 标签。它也做一些其他的事情。我用它取得了一些成功,但有时会出现一些意想不到的问题。欢迎您使用它。该方法在 MgntUtils 开源库中可用。这是它的JavaDoc。该库本身作为 Maven 工件 here 和 Github(包括源代码和 JavaDoc)here 提供。一篇关于图书馆的文章是here。您的代码如下所示:

String htmlString = TextUtils.formatStringToPreserveIndentationForHtml(jsonPrettyString);

【讨论】:

  • 如果有帮助,请写在这里
  • 我很高兴听到这个消息,谢谢。请考虑接受我的回答。
【解决方案2】:

我遇到了同样的问题,偶然发现了如何让它在浏览器中漂亮地打印出来。 在您的 application.properties 文件中,添加这两行:

# Preferred JSON mapper to use for HTTP message conversion.
spring.mvc.converters.preferred-json-mapper=gson

# Whether to output serialized JSON that fits in a page for pretty printing.
spring.gson.pretty-printing=true

参考:https://www.callicoder.com/configuring-spring-boot-to-use-gson-instead-of-jackson/ 可能相关:https://stackoverflow.com/a/62044963

【讨论】:

    猜你喜欢
    • 2015-03-02
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2013-03-19
    相关资源
    最近更新 更多