com.fasterxml.jackson.databind.ObjectMapper 是Jackson库的核心类,负责JSON序列化与反序列化的重任。本文旨在详细介绍其成员属性和方法,帮助开发者更好地利用Jackson进行Java对象与JSON数据之间的转换操作。
初始化与配置
构造与复制
- 默认构造函数:创建一个默认配置的ObjectMapper实例。
- copy():创建当前实例的一个深拷贝,便于修改配置而不影响原实例。
- _checkInvalidCopy():内部方法,用于检查复制操作的有效性。
- 配置相关方法:如setDefaultPrettyPrinter,setDateFormat,setTimeZone等,允许用户自定义ObjectMapper的行为和格式。
输入输出流处理
- 生成器与解析器创建: - 如createGenerator(OutputStream out)、createParser(InputStream in)等,用于创建JSON生成器和解析器,支持多种输入输出形式。
 
- 如
- 读写方法: - readValue(String content, Class<T> valueType):从字符串内容中读取指定类型的Java对象。
- writeValue(OutputStream out, Object value):将Java对象写入输出流为JSON格式。
 
类型解析与注册
- 类型工厂:通过getTypeFactory()获取类型工厂,用于处理复杂的类型映射。
- 类型解析器:如_constructDefaultTypeResolverBuilder(),构建默认类型解析器,用于处理泛型等复杂类型。
- 子类型注册:registerSubtypes(Class<?>... subtypes),注册子类型以支持泛型和继承的序列化/反序列化。
注解与命名策略
- 注解处理器:通过setAnnotationIntrospector设置注解处理器,用于解析类和属性上的Jackson注解。
- 属性命名策略:如setPropertyNamingStrategy,定义如何将Java属性名映射到JSON键名。
默认类型处理
- 默认类型包含:activateDefaultTyping系列方法,控制是否在序列化时包含类型信息,这对于多态序列化尤为重要。
- 类型验证器:通过setPolymorphicTypeValidator确保类型安全,防止不安全的类型转换。
混入(Mix-ins)
- 混入注解:addMixIn(Class<?> target, Class<? extends Object> mixinSource),允许为未直接控制的类添加行为或序列化特性。
配置覆盖与定制
- 配置覆盖:configOverride(Class<?> configClass),对特定类型单独配置序列化/反序列化行为。
- 强制转换配置:coercionConfigDefaults(),全局配置类型转换规则。
问题处理与错误管理
- 问题处理器:addHandler(JsonMappingException.Handler handler),注册异常处理器,自定义错误处理逻辑。
树模型操作
- 创建JSON树:如createObjectNode()、createArrayNode(),用于直接操作JSON结构,而非直接与Java对象互转。
- 树与值转换:treeToValue(TreeNode n, Class<V> valueType)、valueToTree(Object fromValue),在树模型与Java对象之间转换。
总结
ObjectMapper提供了一套强大且灵活的API,覆盖了从简单到复杂的JSON处理需求。通过上述方法,开发者不仅能实现基本的序列化和反序列化,还能进行细致的配置调整,以满足特定应用场景下的要求。了解并熟练运用这些方法,是高效使用Jackson库的基础。