ObjectMapper
是 Jackson 库的核心类,一句话概括:
把 Java 对象 ↔ JSON 字符串 互相转换的“翻译官”。
一、最常用的 4 个场景
方向 | 代码示例 | 作用 |
---|---|---|
对象 → JSON | String json = objectMapper.writeValueAsString(user); |
后端返回给前端、写 Kafka、落 MongoDB |
JSON → 对象 | User user = objectMapper.readValue(json, User.class); |
接收前端参数、消费 MQ、读缓存 |
JSON → 树 | JsonNode node = objectMapper.readTree(json); |
只取一两个字段时,省得建 DTO |
对象 → 字节数组 | byte[] bytes = objectMapper.writeValueAsBytes(obj); |
网络传输、序列化到 Redis |
二、在 Spring Boot 里为什么到处都能用
- Spring MVC 默认内置了一个单例
ObjectMapper
- 返回值自动转 JSON
@RequestBody
自动解析 JSON
- 自己注入即可
@Bean public ObjectMapper objectMapper() { return new ObjectMapper() .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) .registerModule(new JavaTimeModule()); // 支持 LocalDateTime }
- 线程安全 → 可以全局单例,性能高
三、常见实用配置
ObjectMapper om = new ObjectMapper();
om.setSerializationInclusion(JsonInclude.Include.NON_NULL); // null 字段不输出
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 字段多余时不报错
om.registerModule(new JavaTimeModule()); // 支持 JDK8 时间
om.enable(SerializationFeature.INDENT_OUTPUT); // 打印漂亮格式
四、一张图秒懂
Java 对象 ──writeValueAsString──► JSON 字符串
▲ │
│──readValue─────────────────────┘
总结
ObjectMapper
就是 Java 世界里官方、最常用、线程安全的“JSON 与对象互转工具”;在 Spring Boot 中,它既是 HTTP 消息转换器的底层实现,也是业务代码里手动序列化/反序列化的首选。