后端打日志、写配置文件、调试接口,经常需要把一行 JSON 变好看。Java 里最常用的还是 Jackson。

最小示例

ObjectMapper mapper = new ObjectMapper();

Object json = mapper.readTree(raw);

String pretty = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json);

readTree 把字符串读成树,writerWithDefaultPrettyPrinter 输出带缩进的结果。两步就能完成美化,不用建实体类。

输出到日志

直接 log.info(pretty) 会把换行也打进去,日志平台里可能被拆成多行。

要么用 writeValueAsString 之后手动压回一行,要么配置日志框架把多行合并。

更稳妥的做法是只打关键字段,别把整个响应体打进生产日志。

敏感字段处理

用户信息、Token、身份证号,格式化之后更容易被看到,也更容易泄漏。

用 @JsonIgnore 排除字段,或者自定义 serializer 做脱敏。别指望“日志只有内部能看”,日志经常会进第三方平台。

和 fastjson 的区别

Jackson 是 Spring Boot 默认的 JSON 库,生态稳定,安全漏洞相对少。

fastjson 性能好、API 简单,但历史上有过反序列化漏洞,新项目建议优先 Jackson。

什么时候用在线工具

临时看一段接口返回、确认某个字段结构、排查转义问题,打开 JSON 在线解析 比写一段 Java 代码快。

尤其是别人发来一段报错日志,先格式化看清结构,再决定去代码里改哪里。工具是辅助,别把生产数据整个贴进去。