【问题标题】:Jackson not displaying in Pretty Print format杰克逊没有以漂亮的打印格式显示
【发布时间】:2017-12-21 14:46:46
【问题描述】:

我正在使用以下代码将我的 Java 对象转换为 JSON:

ObjectMapper mapper = new ObjectMapper();
    mapper.registerModule(new SnapshotModule()).setTimeZone(timeZone)
            .enable(SerializationFeature.INDENT_OUTPUT)
            .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
            .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
            .disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE)
            .enable(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS)
            .enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY);
  String respJson = mapper .writerWithDefaultPrettyPrinter().writeValueAsString(obj)

这将返回给 Spring Controller RequestMapping,其注释如下所示

@RequestMapping(value = "/{xxx}/{xxx}/{xxx}/", method = RequestMethod.GET, produces = "application/json")
@ResponseBody

当我在记录器中打印此响应时,我可以看到漂亮的 JSON 格式以及缩进。 但是,当我在浏览器中点击 Rest URL 以查看响应时,会看到带有 \r\n 字符的响应,而不是像这样缩进的实际换行 -

[ {\r\n  \"XXX\" : {\r\n    \"XXX\" : \"XXX\",\r\n    \"XXX\" : { },\r\n    \"XXX\" : true\r\n  },\r\n  \"XXX\" : {\r\n    \"XXX\" : \"XXX\",\r\n    \"XXX\" : \"XXX\"\r\n  },\r\n  \"XXX\" : \"XXX\",\r\n  \"XXX\" : \"XXX\",\r\n  \"XXX\" : \"XXX\",\r\n  \"XXX\" : \"XXX\",\r\n  \"XXX\" : \"XXX\",\r\n  \"XXX\" : \"XXX\",\r\n  \"XXX\" : \"XXX\",\r\n  \"XXX\" : \"XXX\"\r\n} ]"

有人可以帮忙解决我的方法有什么问题吗?我什至尝试使用 gson 库,结果是一样的。 请注意,由于我尝试转换为 json 的对象是动态的,因此无法在 pojo 上使用注释。

【问题讨论】:

  • \r\n 是 Windows 用来做断线的方式。用于读取日志文件的编辑器将它们转换为新行。
  • 同意,但为什么 broswer 不能显示漂亮的打印,而是将 \r\n 显示为字符。我试图用“”替换这些 \r\n 字符,但这只会让它们消失。 JSON 仍然不是漂亮的打印,而是单行

标签: java json spring-boot jackson


【解决方案1】:

[解决方案] -

我可以找到一个看起来很奇怪但成功的解决方案。

我修改了 Spring RequestMapping 如下:

@RequestMapping(value = "/{xxx}/{xxx}/{xxx}/", method = RequestMethod.GET, produces = "text/plain")

所以现在我的响应是 JSON 的纯文本表示。

我在使用 Spring Web/MVC 时尝试过使用 application/json。但不知何故,application/json 似乎不适用于 Spring Boot。

【讨论】:

    【解决方案2】:

    如果您只是希望 json 在浏览器中打印得漂亮,那么有很多插件可以为您做到这一点。 https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=en

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 2011-01-07
      相关资源
      最近更新 更多