gson 在Java中,JSON的漂亮打印对于控制台来说很好用,但在浏览器中就不行了

pgvzfuti  于 2022-11-06  发布在  Java
关注(0)|答案(2)|浏览(211)

我有一个JSON文件,我想从Java Sping 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;

有人能帮我在浏览器中得到漂亮的输出吗?

z8dt9xmd

z8dt9xmd1#

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

String htmlString = TextUtils.formatStringToPreserveIndentationForHtml(jsonPrettyString);
jexiocij

jexiocij2#

我遇到了同样的问题,偶然发现了如何让它在浏览器中漂亮地打印出来。在你的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

相关问题