java中将对象序列化为json字符串最常用、最推荐的方式是使用jackson库的objectmapper,通过writevalueasstring()方法实现,需配置忽略null、格式化输出、日期处理等以满足生产需求。

Java 中将对象序列化为 JSON 字符串,最常用、最推荐的方式是使用 Jackson 库(com.fasterxml.jackson.databind.ObjectMapper),它稳定、高效、支持丰富特性(如注解控制字段、日期格式、空值处理等)。以下是实用操作方式:
添加 Jackson 依赖(Maven)
确保项目中已引入 Jackson 核心依赖:
<dependency><groupid>com.fasterxml.jackson.core</groupid><artifactid>jackson-databind</artifactid><version>2.17.0</version></dependency>
注意:jackson-databind 会自动拉取 jackson-core 和 jackson-annotations,无需额外声明。
基础序列化(Object → JSON String)
使用 ObjectMapper 的 writeValueAsString() 方法即可完成转换:
- 创建单例
ObjectMapper实例(线程安全,建议复用,不要每次 new) - 调用
writeValueAsString(obj),传入任意 POJO 对象 - 方法自动处理 getter、public 字段、标准集合、嵌套对象等
示例:
ObjectMapper mapper = new ObjectMapper();
User user = new User("Alice", 28, "alice@example.com");
String json = mapper.writeValueAsString(user); // {"name":"Alice","age":28,"email":"alice@example.com"}
常见配置建议(提升实用性)
默认行为可能不满足生产需求,可通过配置优化输出:
- 忽略 null 字段:`mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)`
- 格式化输出(带缩进):`mapper.enable(SerializationFeature.INDENT_OUTPUT)`
-
日期转 ISO 格式(如 yyyy-MM-dd HH:mm:ss):
`mapper.registerModule(new JavaTimeModule())` +
`mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)` -
下划线命名转驼峰(反向也支持):
`mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)`
处理异常与注意事项
序列化可能抛出 JsonProcessingException(如对象含不可序列化字段、循环引用):
- 务必捕获该异常并妥善处理(如记录日志、返回默认值)
- 避免序列化含
java.awt.Image、InputStream、未实现Serializable的自定义类型等非标准字段 - 若需忽略某字段,可在属性上加
@JsonIgnore;若仅序列化不反序列化,用@JsonProperty(access = JsonProperty.Access.READ_ONLY)
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











