【发布时间】: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