Jackson 简明教程

Jackson - ObjectMapper Class

Introduction

ObjectMapper 是 Jackson 库的主体类。ObjectMapper 类 ObjectMapper 提供了从基本 POJO(普通旧 Java 对象)或从通用 JSON 树模型(JsonNode)中读取和写入 JSON 的功能,以及执行转换的相关功能。它还可以高度定制化,以便处理不同形式的 JSON 内容,并支持更高级的对象概念,例如多态和对象标识。ObjectMapper 还作为更高级的 ObjectReader 和 ObjectWriter 类的工厂。

Class Declaration

以下是 com.fasterxml.jackson.databind.ObjectMapper 类的声明 -

public class ObjectMapper
   extends ObjectCodec
      implements Versioned, Serializable

Nested Classes

S.No.

Class & Description

1

*static class ObjectMapper.DefaultTypeResolverBuilder*提供类型解析器生成器的定制类型解析器生成器,这些生成器与所谓的“默认类型化”一起使用(有关详细信息,请参阅 enableDefaultTyping())。

2

*static class ObjectMapper.DefaultTyping*与 enableDefaultTyping() 一起使用,用于指定应将哪种类型的类型(类)用于默认类型化。

Fields

  1. protected DeserializationConfig _deserializationConfig - 配置对象,用于定义序列化过程的基本全局设置。

  2. protected DefaultDeserializationContext _deserializationContext - 蓝图上下文对象;存储在此处以允许自定义子类。

  3. protected InjectableValues _injectableValues - 提供用于反序列化 POJO 中注入的值。

  4. protected JsonFactory _jsonFactory - 根据需要用于创建 JsonParser 和 JsonGenerator 实例的工厂。

  5. protected SimpleMixInResolver _mixIns - 映射定义如何应用混合注释:键是接收附加注释的类型,值是具有“混合”注释的类型。

  6. protected ConfigOverrides _propertyOverrides - 当前处于活动状态的每个类型配置覆盖,通过属性的声明类型访问。

  7. protected Set<Object> _registeredModuleTypes - 已经注册的模块类型(按 Module.getTypeId())的集合;跟踪是否已启用 MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS,以便可以忽略重复的注册调用(以避免多次添加相同的处理程序)。

  8. protected ConcurrentHashMap<JavaType,JsonDeserializer<Object>> _rootDeserializers - 我们将使用单独的主级别 Map 来保持对根级别反序列化器的追踪。

  9. protected SerializationConfig _serializationConfig - 用于在序列化过程中定义基本全局设置的配置对象。

  10. protected SerializerFactory _serializerFactory - 用于构造序列化器的序列化器工厂。

  11. protected DefaultSerializerProvider _serializerProvider - 用于管理对序列化中使用的序列化器的访问,以及缓存。

  12. protected SubtypeResolver _subtypeResolver - 用于注册子类型,根据需要将它们解决为超级/子类型。

  13. protected TypeFactory _typeFactory - 用于创建 JavaType 实例的特定工厂;需要允许模块添加更多自定义类型处理(主要支持非 Java JVM 语言的类型)。

  14. *protected static AnnotationIntrospector DEFAULT_ANNOTATION_INTROSPECTOR *

  15. protected static BaseSettings DEFAULT_BASE - 基本设置包含用于所有 ObjectMapper 实例的默认值。

  16. *protected static VisibilityChecker<?> STD_VISIBILITY_CHECKER *

Constructors

S.No.

Constructor & Description

1

*ObjectMapper()*默认构造函数,将根据需要构造默认 JsonFactory,使用 SerializerProvider 作为其 SerializerProvider,将 BeanSerializerFactory 作为其 SerializerFactory。

2

*ObjectMapper(JsonFactory jf)*构造使用指定的 JsonFactory 来构造必需的 JsonParsers 和/或 JsonGenerators 的实例。

3

*ObjectMapper(JsonFactory jf, SerializerProvider sp, DeserializerProvider dp)*构造使用指定的 JsonFactory 来构造必需的 JsonParsers 和/或 JsonGenerators,并使用给定的提供程序访问序列化器和反序列化器。

4

*protected ObjectMapper(ObjectMapper src)*拷贝构造函数,主要用于支持 copy()。

Methods

1

*protected void _checkInvalidCopy(Class<?> exp) *

2

protected void _configAndWriteValue(JsonGenerator g, Object value) - 调用该方法以根据需要配置生成器,然后调用编写功能

3

protected Object _convert(Object fromValue, JavaType toValueType) - 实际转换实现:代码大部分内联,而不是使用现有的读取和写入方法。

4

protected JsonDeserializer&lt;Object&gt; _findRootDeserializer(DeserializationContext ctxt, JavaType valueType) - 调用该方法来为已通过的根级别值找到反序列化器。

5

protected JsonToken _initForReading(JsonParser p) - 调用该方法来确保给定的解析器已准备好读取数据绑定的内容。

6

protected ObjectReader _newReader(DeserializationConfig config) - 工厂方法子类必须重写,以生成正确子类型的 ObjectReader 实例

7

protected ObjectReader _newReader(DeserializationConfig config, JavaType valueType, Object valueToUpdate, FormatSchema schema, InjectableValues injectableValues) - 工厂方法子类必须覆盖,以生成适当子类型的 ObjectReader 实例

8

protected ObjectWriter _newWriter(SerializationConfig config) - 工厂方法子类必须覆盖,以生成适当子类型的 ObjectWriter 实例

9

protected ObjectWriter _newWriter(SerializationConfig config, FormatSchema schema) - 工厂方法子类必须覆盖,以生成适当子类型的 ObjectWriter 实例

10

protected ObjectWriter _newWriter(SerializationConfig config, JavaType rootType, PrettyPrinter pp) - 工厂方法子类必须覆盖,以生成适当子类型的 ObjectWriter 实例。

11

*protected Object _readMapAndClose(JsonParser p0, JavaType valueType) *

12

protected Object _readValue(DeserializationConfig cfg, JsonParser p, JavaType valueType) - 值读取+绑定操作的实际实现。

13

protected DefaultSerializerProvider _serializerProvider(SerializationConfig config)

14

*protected Object _unwrapAndDeserialize(JsonParser p, DeserializationContext ctxt, DeserializationConfig config, JavaType rootType, JsonDeserializer<Object> deser) *

15

*protected void _verifySchemaType(FormatSchema schema) *

16

void acceptJsonFormatVisitor(Class&lt;?&gt; type, JsonFormatVisitorWrapper visitor) - 用于使用指定访问者访问给定类型层次结构的方式。

17

void acceptJsonFormatVisitor(JavaType type, JsonFormatVisitorWrapper visitor) - 用于使用指定访问者访问给定类型层次结构的方式。

18

ObjectMapper addHandler(DeserializationProblemHandler h) - 用于添加指定的 DeserializationProblemHandler 的方式,以便在反序列化期间用来处理特定问题。

19

ObjectMapper addMixIn(Class&lt;?&gt; target, Class&lt;?&gt; mixinSource) - 用于添加补全注释的方式,以便用来增强指定的类或接口。

20

boolean canDeserialize(JavaType type) - 可以调用的方式,用来检查映射器是否认为可以反序列化给定类型的一个对象。

21

boolean canDeserialize(JavaType type, AtomicReference&lt;Throwable&gt; cause) - 与 canDeserialize(JavaType) 相似的方式,但可能会返回试图构造序列化器时抛出的实际 Throwable:这可能有助于解决实际问题。

22

boolean canSerialize(Class&lt;?&gt; type) - 可以调用的方式,用来检查映射器是否认为可以序列化给定类的实例。

23

boolean canSerialize(Class&lt;?&gt; type, AtomicReference&lt;Throwable&gt; cause) - 与 canSerialize(Class) 相似的方式,但可能会返回试图构造序列化器时抛出的实际 Throwable:这可能有助于解决实际问题。

24

ObjectMapper clearProblemHandlers() - 从此映射器中移除所有已注册的 DeserializationProblemHandlers 实例的方式。

25

MutableConfigOverride configOverride(Classlt;?&gt; type) - 针对给定类型获取可变配置覆盖对象,需要添加或更改适用于给定类型属性的按类型覆盖。

26

ObjectMapper configure(DeserializationFeature f, boolean state) - 更改此对象映射程序的开启/关闭反序列化功能的状态。

27

ObjectMapper configure(JsonGenerator.Feature f, boolean state) - 此对象映射器创建的生成器实例的开关特性 JsonGenerator 状态的方法。

28

ObjectMapper configure(JsonParser.Feature f, boolean state) - 此对象映射器创建的解析器实例的指定 JsonParser.Features 状态的方法。

29

ObjectMapper configure(MapperFeature f, boolean state) - 此映射器实例的开关映射器状态的方法。

30

ObjectMapper configure(SerializationFeature f, boolean state) - 此对象映射器的开关序列化状态的方法。

31

JavaType constructType(Type t) - 构造 JavaType 的便捷方法,从给定类型(通常为 java.lang.Class)中构造,但没有显式上下文。

32

&lt;T&gt; T convertValue(Object fromValue, Class&lt;T&gt; toValueType) - 如果(但仅当!)需要转换时,执行两步转换从给定值到指定值类型的实例的便捷方法。

33

&lt;T&gt; T convertValue(Object fromValue, JavaType toValueType) - 查看 convertValue(Object, Class)

34

&lt;T&gt; T convertValue(Object fromValue, TypeReference&lt;?&gt; toValueTypeRef) - 查看 convertValue(Object, Class)

35

ObjectMapper copy() - 创建具有与此实例相同初始配置的新 ObjectMapper 实例的方法。

36

ArrayNode createArrayNode() - 注意:返回类型是协变的,因为基本 ObjectCodec 抽象不能引用具体的节点类型(因为它是核心包的一部分,而实现是映射包的一部分)

37

ObjectNode createObjectNode() - 注意:返回类型是协变的,因为基本 ObjectCodec 抽象不能引用具体的节点类型(因为它是核心包的一部分,而实现是映射包的一部分)

38

protected ClassIntrospector defaultClassIntrospector() - 可覆盖的助手方法,用于构造要使用的默认 ClassIntrospector。

39

ObjectMapper disable(DeserializationFeature feature) - 启用指定 DeserializationConfig 特性方法。

40

ObjectMapper disable(DeserializationFeature first, DeserializationFeature&#8230;&#8203; f) - 启用指定 DeserializationConfig 特性方法。

41

ObjectMapper disable(JsonGenerator.Feature&#8230;&#8203; features) - 禁用特定 JsonGenerator.Features 的方法,用于此对象映射器创建的解析器实例。

42

ObjectMapper disable(JsonParser.Feature&#8230;&#8203; features) - 禁用特定 JsonParser.Features 的方法,用于此对象映射器创建的解析器实例。

43

ObjectMapper disable(MapperFeature&#8230;&#8203; f) - 启用指定 DeserializationConfig 特性方法。

44

ObjectMapper disable(SerializationFeature f) - 启用指定 DeserializationConfig 特性方法。

45

ObjectMapper disable(SerializationFeature first, SerializationFeature&#8230;&#8203; f) - 启用指定 DeserializationConfig 特性方法。

46

ObjectMapper disableDefaultTyping() - 禁用自动包含类型信息的方法;如果启用,仅显式注释的类型(带有 JsonTypeInfo 的类型)将具有附加的嵌入式类型信息。

47

ObjectMapper enable(DeserializationFeature feature) - 启用指定 DeserializationConfig 特性的方法。

48

ObjectMapper enable(DeserializationFeature first, DeserializationFeature&#8230;&#8203; f) - 启用指定 DeserializationConfig 特性的方法。

49

ObjectMapper enable(JsonGenerator.Feature&#8230;&#8203; features) - 此对象映射器创建的分析器实例中启用指定 JsonGenerator.Features 的方法。

50

ObjectMapper enable(JsonParser.Feature&#8230;&#8203; features) - 此对象映射器创建的分析器实例中启用指定 JsonParser.Features 的方法。

51

ObjectMapper enable(MapperFeature&#8230;&#8203; f) - 启用指定 MapperConfig 特性的方法。

52

ObjectMapper enable(SerializationFeature f) - 启用指定 DeserializationConfig 特性的方法。

53

ObjectMapper enable(SerializationFeature first, SerializationFeature&#8230;&#8203; f) - 启用指定 DeserializationConfig 特性的方法。

54

ObjectMapper enableDefaultTyping() - 等效于调用以下内容的便捷方法:

55

ObjectMapper enableDefaultTyping(ObjectMapper.DefaultTyping dti) - 等效于调用以下内容的便捷方法:

56

ObjectMapper enableDefaultTyping(ObjectMapper.DefaultTyping applicability, JsonTypeInfo.As includeAs) - 启用自动包含类型信息的方法,这是正确反序列化多态类型所必需的(除非类型已用 JsonTypeInfo 进行注释)。

57

ObjectMapper enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping applicability, String propertyName) - 启用自动包含类型信息(这是正确反序列化多态类型所必需的)的方法——使用“As.PROPERTY”包含机制和指定的属性名称用于包含(默认值为“@class”因为默认类型信息始终使用类名作为类型标识符)

58

ObjectMapper findAndRegisterModules() - 在功能上等效于以下内容的便捷方法:mapper.registerModules(mapper.findModules());

59

*Class<?> findMixInClassFor(Class<?> cls) *

60

static List&lt;Module&gt; findModules() - 使用 JDK ServiceLoader 工具及模块提供的 SPI 定位可用方法的方法。

61

static List&lt;Module&gt; findModules(ClassLoader classLoader) - 使用 JDK ServiceLoader 工具及模块提供的 SPI 定位可用方法的方法。

62

*DateFormat getDateFormat() *

63

DeserializationConfig getDeserializationConfig() - 返回定义反序列化配置设置的共享默认 DeserializationConfig 对象的方法。

64

DeserializationContext getDeserializationContext() - 获取当前 DeserializationContext 的方法。

65

JsonFactory getFactory() - 如果此映射器需要构造 JsonParsers 和/或 JsonGenerators,则可用于获取此映射器使用的 JsonFactory 的方法。

66

*InjectableValues getInjectableValues() *

67

JsonFactory getJsonFactory() - 已弃用。自 2.1 起:改用 getFactory()

68

JsonNodeFactory getNodeFactory() - 可用于获取当对 Tree 直接构造根 JsonNode 实例时,此映射器将使用的 JsonNodeFactory 的方法。

69

PropertyNamingStrategy getPropertyNamingStrategy()

70

SerializationConfig getSerializationConfig() - 返回定义用于序列化的配置设置的共享默认 SerializationConfig 对象的方法。

71

SerializerFactory getSerializerFactory() - 获取当前 SerializerFactory 的方法。

72

SerializerProvider getSerializerProvider() - “蓝图”(或工厂)实例的访问器,可通过调用 DefaultSerializerProvider.createInstance(com.fasterxml.jackson.databind.SerializationConfig, com.fasterxml.jackson.databind.ser.SerializerFactory) 来从中创建实例。

73

SerializerProvider getSerializerProviderInstance() - 用于构造和返回可用于访问序列化器的 SerializerProvider 实例的访问器。

74

SubtypeResolver getSubtypeResolver() - 用于访问正在使用的子类型解析器的方法。

75

*TypeFactory getTypeFactory() * - 用于获取当前配置的 TypeFactory 实例的访问器。

76

VisibilityChecker&lt;?&gt; getVisibilityChecker() - 用于访问当前配置的可见性检查器的方法;用于确定是否可以自动检测给定的属性元素(方法、字段、构造函数)的对象。

77

boolean isEnabled(DeserializationFeature f) - 用于检查是否启用了给定与反序列化特定的功能的方法。

78

boolean isEnabled(JsonFactory.Feature f) - 等效于以下内容的便捷方法:

79

*boolean isEnabled(JsonGenerator.Feature f) *

80

*boolean isEnabled(JsonParser.Feature f) *

81

boolean isEnabled(MapperFeature f) - 用于检查是否启用了给定的 MapperFeature 的方法。

82

boolean isEnabled(SerializationFeature f) - 用于检查是否启用了给定与序列化特定的功能的方法。

83

*int mixInCount() *

84

ObjectReader reader() - 具有默认设置的 ObjectReader 的工厂方法。

85

ObjectReader reader(Base64Variant defaultBase64) - ObjectReader 的工厂方法,此方法将对 Base64 编码的二进制数据使用指定的 Base64 编码变体。

86

ObjectReader reader(Class&lt;?&gt; type) - 不推荐使用。从 2.5 版开始,改为使用 readerFor(Class)

87

ObjectReader reader(ContextAttributes attrs) - ObjectReader 的工厂方法,此方法将使用指定的默认属性。

88

ObjectReader reader(DeserializationFeature feature) - ObjectReader 的工厂方法,此方法启用了指定的功能(与该映射器实例的设置相比)。

89

ObjectReader reader(DeserializationFeature first, DeserializationFeature&#8230;&#8203; other) - ObjectReader 的工厂方法,此方法启用了指定的功能(与该映射器实例的设置相比)。

90

ObjectReader reader(FormatSchema schema) - ObjectReader 的工厂方法,此方法将特定的模式对象传递给用于读取内容的 JsonParser。

91

ObjectReader reader(InjectableValues injectableValues) - 用于构造将使用指定的可注入值的 ObjectReader 的工厂方法。

92

ObjectReader reader(JavaType type) - 已弃用。从 2.5 开始,请使用 readerFor(JavaType) 代替

93

ObjectReader reader(JsonNodeFactory f) - 用于构造将使用指定的 JsonNodeFactory 构建 JSON 树的 ObjectReader 的工厂方法。

94

ObjectReader reader(TypeReference&lt;?&gt; type) - 已弃用。从 2.5 开始,请使用 readerFor(TypeReference) 代替

95

ObjectReader readerFor(Class&lt;?&gt; type) - 用于构造将读取或更新指定类型实例的 ObjectReader 的工厂方法

96

ObjectReader readerFor(JavaType type) - 用于构造将读取或更新指定类型实例的 ObjectReader 的工厂方法

97

ObjectReader readerFor(TypeReference&lt;?&gt; type) - 用于构造将读取或更新指定类型实例的 ObjectReader 的工厂方法

98

ObjectReader readerForUpdating(Object valueToUpdate) - 用于构造将使用 JSON 数据更新给定对象(通常是 Bean,但也可以是 Collection 或 Map,但不是数组)的 ObjectReader 的工厂方法。

99

ObjectReader readerWithView(Class&lt;?&gt; view) - 用于构造将使用指定的 JSON 视图(筛选器)反序列化对象的 ObjectReader 的工厂方法。

100

JsonNode readTree(byte[] content) - 用于使用一组 JsonNode 实例表示的反序列化 JSON 内容为树的方法。

101

JsonNode readTree(File file) - 用于使用一组 JsonNode 实例表示的反序列化 JSON 内容为树的方法。

102

JsonNode readTree(InputStream in) - 用于使用一组 JsonNode 实例表示的反序列化 JSON 内容为树的方法。

103

&lt;T extends TreeNode&gt; T readTree(JsonParser p) - 用于使用一组 JsonNode 实例表示的反序列化 JSON 内容为树的方法。

104

JsonNode readTree(Reader r) - 用于使用一组 JsonNode 实例表示的反序列化 JSON 内容为树的方法。

105

JsonNode readTree(String content) - 用于使用一组 JsonNode 实例表示的反序列化 JSON 内容为树的方法。

106

JsonNode readTree(URL source) - 用于使用一组 JsonNode 实例表示的反序列化 JSON 内容为树的方法。

107

*<T> T readValue(byte[] src, Class<T> valueType) *

108

&lt;T&gt; T readValue(byte[] src, int offset, int len, Class&lt;T&gt; valueType)

109

*<T> T readValue(byte[] src, int offset, int len, JavaType valueType) *

110

*<T> T readValue(byte[] src, int offset, int len, TypeReference valueTypeRef) *

111

*<T> T readValue(byte[] src, JavaType valueType) *

112

*<T> T readValue(byte[] src, TypeReference valueTypeRef) *

113

*<T> T readValue(DataInput src, Class<T> valueType) *

114

*<T> T readValue(DataInput src, JavaType valueType) *

115

&lt;T&gt; T readValue(File src, Class&lt;T&gt; valueType) - 从给定文件中反序列化 JSON 内容到给定 Java 类型的函数。

116

&lt;T&gt; T readValue(File src, JavaType valueType) - 从给定文件中反序列化 JSON 内容到给定 Java 类型的函数。

117

&lt;T&gt; T readValue(File src, TypeReference valueTypeRef) - 从给定文件中反序列化 JSON 内容到给定 Java 类型的函数。

118

*<T> T readValue(InputStream src, Class<T> valueType) *

119

*<T> T readValue(InputStream src, JavaType valueType) *

120

*<T> T readValue(InputStream src, TypeReference valueTypeRef) *

121

&lt;T&gt; T readValue(JsonParser p, Class&lt;T&gt; valueType) * - Method to deserialize JSON content into a non-container type (it can be an array type, however): typically a bean, array or a wrapper type (like Boolean). *

122

&lt;T&gt; T readValue(JsonParser p, JavaType valueType) - 类型安全的重载函数,本质上是 readValue(JsonParser, Class) 的别名。

123

&lt;T&gt; T readValue(JsonParser p, ResolvedType valueType) - 将 JSON 内容反序列化到 Java 类型的函数,类型引用作为参数传递。

124

&lt;T&gt; T readValue(JsonParser p, TypeReference&lt;?&gt; valueTypeRef) - 将 JSON 内容反序列化为 Java 类型,其引用作为参数传递。

125

*<T> T readValue(Reader src, Class<T> valueType) * -

1

*<T> T readValue(Reader src, JavaType valueType) *

126

*<T> T readValue(Reader src, TypeReference valueTypeRef) *

127

&lt;T&gt; T readValue(String content, Class&lt;T&gt; valueType) - 从给定的 JSON 内容字符串反序列化 JSON 内容的方法。

128

&lt;T&gt; T readValue(String content, JavaType valueType) - 从给定的 JSON 内容字符串反序列化 JSON 内容的方法。

129

&lt;T&gt; T readValue(String content, TypeReference valueTypeRef) - 从给定的 JSON 内容字符串反序列化 JSON 内容的方法。

130

&lt;T&gt; T readValue(URL src, Class&lt;T&gt; valueType) - 将 JSON 内容从给定的资源反序列化成给定的 Java 类型的方法。

131

*<T> T readValue(URL src, JavaType valueType) *

132

&lt;T&gt; T readValue(URL src, TypeReference valueTypeRef) - 将 JSON 内容从给定的资源反序列化成给定的 Java 类型的方法。

133

&lt;T&gt; MappingIterator&lt;T&gt; readValues(JsonParser p, Class&lt;T&gt; valueType) - 便捷方法,在其功能上等效于:

134

&lt;T&gt; MappingIterator&lt;T&gt; readValues(JsonParser p, JavaType valueType) - 便捷方法,在其功能上等效于:

135

&lt;T&gt; MappingIterator&lt;T&gt; readValues(JsonParser p, ResolvedType valueType) - 便捷方法,在其功能上等效于:

136

&lt;T&gt; MappingIterator&lt;T&gt; readValues(JsonParser p, TypeReference&lt;?&gt;valueTypeRef) - 从解析器流中读取对象序列的方法。

137

ObjectMapper registerModule(Module module) - 注册可以扩展此映射器提供的功能的模块的方法;比如,通过添加自定义序列化器和反序列化器的提供者。

138

ObjectMapper registerModules(Iterable&lt;Module&gt; modules) - 按顺序注册指定模块的便捷方法;在其功能上等效于:

139

ObjectMapper registerModules(Module&#8230;&#8203; modules) - 按顺序注册指定模块的便捷方法;在其功能上等效于:

140

void registerSubtypes(NamedType&#8230;&#8203; types) - 将指定类注册为子类型的方法,以便基于类型名称解析可以将父类型链接到子类型(作为使用注解的替代)。

141

ObjectMapper setAnnotationIntrospector(AnnotationIntrospector ai) - 设置此映射器实例用于序列化和反序列化的 AnnotationIntrospector 的方法。

142

ObjectMapper setAnnotationIntrospectors(AnnotationIntrospector serializerAI, AnnotationIntrospector deserializerAI) - 更改此映射器实例用于序列化和反序列化的 AnnotationIntrospector 实例的方法,分别指定它们以便不同的方面可以使用不同的自省。

143

ObjectMapper setBase64Variant(Base64Variant v) - 将配置 byte[] 序列化器和反序列化器要使用的默认 Base64Variant 的方法。

144

ObjectMapper setConfig(DeserializationConfig config) - 允许覆盖基础 DeserializationConfig 对象的方法。

145

ObjectMapper setConfig(SerializationConfig config) - 允许覆盖基础 SerializationConfig 对象的方法,其中包含特定序列化配置设置。

146

ObjectMapper setDateFormat(DateFormat dateFormat) - 配置在将时间值序列化为字符串和从 JSON 字符串反序列化时使用的默认 DateFormat 的方法。

147

ObjectMapper setDefaultPrettyPrinter(PrettyPrinter pp) - 启用“默认漂亮打印”(通过启用 SerializationFeature.INDENT_OUTPUT)时,用于指定要使用的 PrettyPrinter 的方法

148

ObjectMapper setDefaultTyping(TypeResolverBuilder&lt;?&gt; typer) - 用于启用自动包含类型信息的方法,其中要使用的指定处理程序对象用于确定此信息影响哪些类型以及信息嵌入的详细信息。

149

ObjectMapper setFilterProvider(FilterProvider filterProvider) - 用于配置此映射程序以使用指定的 FilterProvider 将 Filter ID 映射到实际的过滤器实例的方法。

150

Object setHandlerInstantiator(HandlerInstantiator hi) - 用于配置 HandlerInstantiator 以供给定类创建处理程序(如序列化程序、反序列化程序、类型和类型 ID 解析器)实例的方法。

151

ObjectMapper setInjectableValues(InjectableValues injectableValues) - 用于配置 InjectableValues 的方法,用于查找要注入的值。

152

ObjectMapper setLocale(Locale l) - 用于覆盖要用于格式化的默认区域设置的方法。

153

void setMixInAnnotations(Map&lt;Class&lt;?&gt;,Class&lt;?&gt;&gt; sourceMixins) - 弃用。自 2.5 起:已替换为方法的 fluent 形式;setMixIns(java.util.Map<java.lang.Class<?>, java.lang.Class<?>>).

154

ObjectMapper setMixInResolver(ClassIntrospector.MixInResolver resolver) - 可以被调用以指定给定解析器用于查找要使用的混合类的方法,覆盖直接添加的映射。

155

ObjectMapper setMixIns(Map&lt;Class&lt;?&gt;,Class&lt;?&gt;&gt; sourceMixins) - 用于定义要使用的混合注释的方法,以增强可处理(可序列化/可反序列化的)类拥有的注释。

156

ObjectMapper setNodeFactory(JsonNodeFactory f) - 用于指定 JsonNodeFactory,以用于构造根级树节点(通过方法 createObjectNode())

157

ObjectMapper setPropertyInclusion(JsonInclude.Value incl) - 用于设置默认 POJO 属性包含策略以进行序列化的方法。

158

ObjectMapper setPropertyNamingStrategy(PropertyNamingStrategy s) - 用于设置要使用的自定义属性命名策略的方法。

159

ObjectMapper setSerializationInclusion(JsonInclude.Include incl) - 便利方法,等同于调用:

160

ObjectMapper setSerializerFactory(SerializerFactory f) - 用于设置特定的 SerializerFactory,以用于构造(bean)序列化程序的方法。

161

ObjectMapper setSerializerProvider(DefaultSerializerProvider p) - 用于设置“蓝图”SerializerProvider 实例,以用作实际提供程序实例的基础,用于处理 JsonSerializer 实例的缓存。

162

ObjectMapper setSubtypeResolver(SubtypeResolver str) - 用于设置要使用的自定义子类型解析器的方法。

163

ObjectMapper setTimeZone(TimeZone tz) - 用于覆盖要用于格式化的默认时区的方法。

164

ObjectMapper setTypeFactory(TypeFactory f) - 可以用于覆盖此映射程序使用的 TypeFactory 实例的方法。

165

ObjectMapper setVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility) - 便利方法,允许更改底层 VisibilityCheckers 的配置,以更改自动检测哪些类型的属性的细节。

166

ObjectMapper setVisibility(VisibilityChecker&lt;?&gt; vc) - 用于设置当前配置的 VisibilityChecker 的方法,用于确定给定的属性元素(方法、字段、构造函数)是否可以自动检测。

167

void setVisibilityChecker(VisibilityChecker&lt;?&gt; vc) - 已弃用。从 2.6 版开始,改用 setVisibility(VisibilityChecker)。

168

JsonParser treeAsTokens(TreeNode n) - 根据 JSON 树形结构创建 JsonParser 的方法。

169

&lt;T&gt; T treeToValue(TreeNode n, Class&lt;T&gt; valueType) - 将给定的 JSON 树形结构中的数据绑定到特定值(通常为 bean)类型的便捷转换方法。

170

&lt;T extends JsonNode&gt; T valueToTree(Object fromValue) - treeToValue(com.fasterxml.jackson.core.TreeNode, java.lang.Class<T>) 的反向操作;给定一个值(通常为 bean),将构建等效的 JSON 树形结构。

171

Version version() - 将从包含此类别的 JAR 中存储和读取版本信息的方法。

172

ObjectWriter writer() - 用于构建具有默认设置的 ObjectWriter 的便捷方法。

173

ObjectWriter writer(Base64Variant defaultBase64) - 用于构建工厂方法的 ObjectWriter,此方法将使用指定的 Base64 编码变量处理 Base64 编码的二进制数据。

174

ObjectWriter writer(CharacterEscapes escapes) -

175

ObjectWriter writer(ContextAttributes attrs) - 用于构建工厂方法的 ObjectWriter,此方法将使用指定的默认属性。

176

ObjectWriter writer(DateFormat df) - 用于构建工厂方法的 ObjectWriter,此方法将使用指定的 DateFormat 序列化对象;或者,如果传入空值,则使用时间戳(64 位数字)。

177

ObjectWriter writer(FilterProvider filterProvider) - 用于构建工厂方法的 ObjectWriter,此方法将使用指定的过滤器提供程序序列化对象。

178

ObjectWriter writer(FormatSchema schema) - 用于构建工厂方法的 ObjectWriter,此方法会将特定架构对象传递给用于编写内容的 JsonGenerator。

179

ObjectWriter writer(PrettyPrinter pp) - 用于构建使用指定的漂亮打印机进行缩进(或如果为空,则没有漂亮打印机)序列化对象的工厂方法的 ObjectWriter。

180

ObjectWriter writer(SerializationFeature feature) - 用于构建启用指定要素的工厂方法的 ObjectWriter(与本映射器实例的设置进行比较)。

181

ObjectWriter writer(SerializationFeature first, SerializationFeature&#8230;&#8203; other) - 用于构建启用指定要素的工厂方法的 ObjectWriter(与本映射器实例的设置进行比较)。

182

ObjectWriter writerFor(Class&lt;?&gt; rootType) - 用于构建工厂方法的 ObjectWriter,此方法将使用指定的根类型序列化对象,而不是值的实际运行时类型。

183

ObjectWriter writerFor(JavaType rootType) - 用于构建工厂方法的 ObjectWriter,此方法将使用指定的根类型序列化对象,而不是值的实际运行时类型。

184

ObjectWriter writerFor(TypeReference&lt;?&gt; rootType) - 用于构建工厂方法的 ObjectWriter,此方法将使用指定的根类型序列化对象,而不是值的实际运行时类型。

185

ObjectWriter writerWithDefaultPrettyPrinter() - 用于构建使用默认缩进漂亮打印机序列化对象的工厂方法的 ObjectWriter。

186

ObjectWriter writerWithType(Class&lt;?&gt; rootType) - 已弃用。自 2.5 起,改为使用 writerFor(Class)。

187

ObjectWriter writerWithType(JavaType rootType) - 已弃用。自 2.5 起,改为使用 writerFor(JavaType)。

188

ObjectWriter writerWithType(TypeReference&lt;?&gt; rootType) - 已弃用。自 2.5 起,改为使用 writerFor(TypeReference)。

189

ObjectWriter writerWithView(Class&lt;?&gt; serializationView) - 用于构造 ObjectWriter 的工厂方法,该方法将使用指定的 JSON 视图(过滤器)序列化对象。

190

void writeTree(JsonGenerator jgen, JsonNode rootNode) - 使用提供的生成器序列化给定 JSON 树的方法。

191

*void writeTree(JsonGenerator jgen, TreeNode rootNode) *

192

*void writeValue(DataOutput out, Object value) *

193

void writeValue(File resultFile, Object value) - 任何 Java 值都可以序列出为 JSON 输出的方法,写入到提供中,方法如下。

194

void writeValue(JsonGenerator g, Object value) - 任何 Java 值都可以序列出为 JSON 输出的方法,使用方法是使用提供的 JsonGenerator)。

195

void writeValue(OutputStream out, Object value) - 任何 Java 值都可以序列出为 JSON 输出的方法,使用提供中输出流(使用编码 JsonEncoding.UTF8)。

196

void writeValue(Writer w, Object value) - 任何 Java 值都可以序列出为 JSON 输出的方法,使用提供中写入器(编码方法是 JsonEncoding.UTF8)。

197

byte[] writeValueAsBytes(Object value) - 任何 Java 值都可以序列出为一个字节数组的方法。

198

String writeValueAsString(Object value) - 任何 Java 值序列出为一个字符串的方法。

Methods inherited

该类继承以下类的各种方法:

  1. java.lang.Object

ObjectMapper Example

C:/> Jackson_WORKSPACE 选择的任何编辑器中创建以下 java 程序。

文件:JacksonTester.java

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTester {
   public static void main(String args[]){

      ObjectMapper mapper = new ObjectMapper();
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";

      //map json to student
      try{
         Student student = mapper.readValue(jsonString, Student.class);

         System.out.println(student);

         jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(student);

         System.out.println(jsonString);
      }
      catch (JsonParseException e) { e.printStackTrace();}
      catch (JsonMappingException e) { e.printStackTrace(); }
      catch (IOException e) { e.printStackTrace(); }
   }
}

class Student {
   private String name;
   private int age;
   public Student(){}
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   public String toString(){
      return "Student [ name: "+name+", age: "+ age+ " ]";
   }
}

Verify the result

使用 javac 编译器编译类,如下所示:

C:\Jackson_WORKSPACE>javac JacksonTester.java

现在运行 jacksonTester 查看结果:

C:\Jackson_WORKSPACE>java JacksonTester

验证输出

Student [ name: Mahesh, age: 21 ]
{
  "name" : "Mahesh",
  "age" : 21
}