Jackson - ObjectMapper 類



介紹

ObjectMapper 是 Jackson 庫中的主要參與者類。ObjectMapper 類提供讀取和寫入 JSON 的功能,可以從基本 POJO(普通舊 Java 物件)或通用 JSON 樹模型 (JsonNode) 讀寫 JSON,以及執行轉換的相關功能。它還可以高度自定義,以適應不同樣式的 JSON 內容,並支援更高階的物件概念,例如多型性和物件標識。ObjectMapper 也可以作為更高階的 ObjectReader 和 ObjectWriter 類的工廠。

類宣告

以下是 **com.fasterxml.jackson.databind.ObjectMapper** 類的宣告:

public class ObjectMapper
   extends ObjectCodec
      implements Versioned, Serializable

巢狀類

序號 類和描述
1 static class ObjectMapper.DefaultTypeResolverBuilder

自定義 TypeResolverBuilder,提供與所謂的“預設型別”一起使用的型別解析器構建器(有關詳細資訊,請參閱 enableDefaultTyping())。

2 static class ObjectMapper.DefaultTyping

與 enableDefaultTyping() 一起使用的列舉,用於指定應為哪種型別的(類)預設型別使用。

欄位

  • **protected DeserializationConfig _deserializationConfig** - 定義序列化過程基本全域性設定的配置物件。

  • **protected DefaultDeserializationContext _deserializationContext** - 藍圖上下文物件;儲存在此處以允許自定義子類。

  • **protected InjectableValues _injectableValues** - 用於在反序列化 POJO 中注入值的提供程式。

  • **protected JsonFactory _jsonFactory** - 用於根據需要建立 JsonParser 和 JsonGenerator 例項的工廠。

  • **protected SimpleMixInResolver _mixIns** - 定義如何應用 mix-in 註解的對映:鍵是要接收附加註解的型別,值是要“混合”的註解的型別。

  • **protected ConfigOverrides _propertyOverrides** - 當前活動的每個型別配置覆蓋,透過屬性的宣告型別訪問。

  • **protected Set<Object> _registeredModuleTypes** - 已註冊的模組型別集(根據 Module.getTypeId());如果啟用了 MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS,則對其進行跟蹤,以便可以忽略重複的註冊呼叫(主要是為了避免多次新增相同的處理程式)。

  • **protected ConcurrentHashMap<JavaType,JsonDeserializer<Object>> _rootDeserializers** - 我們將使用單獨的主級 Map 來跟蹤根級反序列化器。

  • **protected SerializationConfig _serializationConfig** - 定義序列化過程基本全域性設定的配置物件。

  • **protected SerializerFactory _serializerFactory** - 用於構造序列化器的序列化器工廠。

  • **protected DefaultSerializerProvider _serializerProvider** - 管理對用於序列化的序列化器的訪問(包括快取)的物件。

  • **protected SubtypeResolver _subtypeResolver** - 用於註冊子型別,根據需要將它們解析為超型別/子型別。

  • **protected TypeFactory _typeFactory** - 用於建立 JavaType 例項的特定工廠;需要允許模組新增更多自定義型別處理(主要是為了支援非 Java JVM 語言的型別)。

  • protected static AnnotationIntrospector DEFAULT_ANNOTATION_INTROSPECTOR

  • **protected static BaseSettings DEFAULT_BASE** - 基本設定包含所有 ObjectMapper 例項使用的預設值。

  • protected static VisibilityChecker<?> STD_VISIBILITY_CHECKER

建構函式

序號建構函式和描述
1ObjectMapper()

預設建構函式,它將根據需要構造預設 JsonFactory,使用 SerializerProvider 作為其 SerializerProvider,並使用 BeanSerializerFactory 作為其 SerializerFactory。

2ObjectMapper(JsonFactory jf)

構造使用指定的 JsonFactory 來構造必要的 JsonParsers 和/或 JsonGenerators 的例項。

3ObjectMapper(JsonFactory jf, SerializerProvider sp, DeserializerProvider dp)

構造使用指定的 JsonFactory 來構造必要的 JsonParsers 和/或 JsonGenerators 的例項,並使用給定的提供程式來訪問序列化器和反序列化器。

4protected ObjectMapper(ObjectMapper src)

複製建構函式,主要用於支援 copy()。

方法

用於構造要用於序列化的 SerializerProvider 的可覆蓋輔助方法。void addMixInAnnotations(Class<?> target, Class<?> mixinSource) - 已棄用。自 2.5 起:由該方法的流暢形式替換;addMixIn(Class, Class)。protected DefaultDeserializationContext createDeserializationContext(JsonParser p, DeserializationConfig cfg) - 用於為反序列化單個根值建立 DeserializationContext 例項的內部輔助方法。JsonSchema generateJsonSchema(Class<?> t) - 已棄用。自 2.6 起使用外部 JSON Schema 生成器 (https://github.com/FasterXML/jackson-module-jsonSchema)(在後臺呼叫 acceptJsonFormatVisitor(JavaType, JsonFormatVisitorWrapper)) void registerSubtypes(Class<?>... classes) - 用於將指定類註冊為子型別的方法,以便基於型別的解析可以將超型別連結到子型別(作為使用註解的替代方法)。void setFilters(FilterProvider filterProvider) - 已棄用。自 2.6 起,改用 setFilterProvider(com.fasterxml.jackson.databind.ser.FilterProvider)(允許連結)用於構造 ObjectReader 的工廠方法,該 ObjectReader 將對輸出使用指定的字元轉義詳細資訊。
1protected void _checkInvalidCopy(Class<?> exp)

2**protected void _configAndWriteValue(JsonGenerator g, Object value)** - 用於根據需要配置生成器然後呼叫寫入功能的方法
3**protected Object _convert(Object fromValue, JavaType toValueType)** - 實際的轉換實現:而不是使用現有的讀寫方法,大部分程式碼都是內聯的。
4**protected JsonDeserializer<Object> _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 例項。
11protected Object _readMapAndClose(JsonParser p0, JavaType valueType)
12**protected Object _readValue(DeserializationConfig cfg, JsonParser p, JavaType valueType)** - 值讀取+繫結操作的實際實現。
13protected DefaultSerializerProvider _serializerProvider(SerializationConfig config)
14protected Object _unwrapAndDeserialize(JsonParser p, DeserializationContext ctxt, DeserializationConfig config, JavaType rootType, JsonDeserializer<Object> deser)
15protected void _verifySchemaType(FormatSchema schema)
16**void acceptJsonFormatVisitor(Class<?> type, JsonFormatVisitorWrapper visitor)** - 用於使用指定的訪問者訪問給定型別的型別層次結構的方法。
17**void acceptJsonFormatVisitor(JavaType type, JsonFormatVisitorWrapper visitor)** - 用於使用指定的訪問者訪問給定型別的型別層次結構的方法。
18**ObjectMapper addHandler(DeserializationProblemHandler h)** - 用於新增指定 DeserializationProblemHandler 以用於處理反序列化期間的特定問題的方法。
19**ObjectMapper addMixIn(Class<?> target, Class<?> mixinSource)** - 用於新增要用於增強指定類或介面的 mix-in 註解的方法。
20**boolean canDeserialize(JavaType type)** - 可以呼叫以檢查對映器是否認為它可以反序列化給定型別的物件的方法。
21**boolean canDeserialize(JavaType type, AtomicReference<Throwable> cause)** - 與 canDeserialize(JavaType) 類似的方法,但可以返回嘗試構造序列化器時引發的實際 Throwable:這可能有助於弄清實際問題是什麼。
22**boolean canSerialize(Class<?> type)** - 可以呼叫以檢查對映器是否認為它可以序列化給定類的例項的方法。
23**boolean canSerialize(Class<?> type, AtomicReference<Throwable> cause)** - 與 canSerialize(Class) 類似的方法,但可以返回嘗試構造序列化器時引發的實際 Throwable:這可能有助於弄清實際問題是什麼。
24**ObjectMapper clearProblemHandlers()** - 用於從此對映器中刪除所有已註冊的 DeserializationProblemHandlers 例項的方法。
25**MutableConfigOverride configOverride(Class<?> 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)** - 用於根據給定型別(通常是 java.lang.Class)構造 JavaType 的便捷方法,但沒有顯式上下文。
32**<T> T convertValue(Object fromValue, Class<T> toValueType)** - 用於對給定值執行兩步轉換的便捷方法,轉換為給定值型別的例項(如果且僅當需要轉換時)。
33**<T> T convertValue(Object fromValue, JavaType toValueType)** - 請參閱 convertValue(Object, Class)
34**<T> T convertValue(Object fromValue, TypeReference<?> toValueTypeRef)** - 請參閱 convertValue(Object, Class)
35**ObjectMapper copy()** - 用於建立具有與該例項相同的初始配置的新 ObjectMapper 例項的方法。
36**ArrayNode createArrayNode()** - 注意:返回型別是協變的,因為基本 ObjectCodec 抽象不能引用具體的節點型別(因為它屬於核心包的一部分,而 impls 屬於對映器包的一部分)
37**ObjectNode createObjectNode()** - 注意:返回型別是協變的,因為基本 ObjectCodec 抽象不能引用具體的節點型別(因為它屬於核心包的一部分,而 impls 屬於對映器包的一部分)
38**protected ClassIntrospector defaultClassIntrospector()** - 用於構造要使用的預設 ClassIntrospector 的可覆蓋輔助方法。
39**ObjectMapper disable(DeserializationFeature feature)** - 用於啟用指定的 DeserializationConfig 功能的方法。
40**ObjectMapper disable(DeserializationFeature first, DeserializationFeature... f)** - 用於啟用指定的 DeserializationConfig 功能的方法。
41**ObjectMapper disable(JsonGenerator.Feature... features)** - 用於為此物件對映器建立的解析器例項停用指定的 JsonGenerator.Features 的方法。
42**ObjectMapper disable(JsonParser.Feature... features)** - 用於為此物件對映器建立的解析器例項停用指定的 JsonParser.Features 的方法。
43**ObjectMapper disable(MapperFeature... f)** - 用於啟用指定的 DeserializationConfig 功能的方法。
44**ObjectMapper disable(SerializationFeature f)** - 用於啟用指定的 DeserializationConfig 功能的方法。
45**ObjectMapper disable(SerializationFeature first, SerializationFeature... f)** - 用於啟用指定的 DeserializationConfig 功能的方法。
46**ObjectMapper disableDefaultTyping()** - 用於停用自動包含型別資訊的方法;如果是這樣,只有顯式註釋的型別(具有 JsonTypeInfo 的型別)將具有附加的嵌入式型別資訊。
47**ObjectMapper enable(DeserializationFeature feature)** - 用於啟用指定的 DeserializationConfig 功能的方法。
48**ObjectMapper enable(DeserializationFeature first, DeserializationFeature... f)** - 用於啟用指定的 DeserializationConfig 功能的方法。
49ObjectMapper enable(JsonGenerator.Feature... features) - 此方法用於為該物件對映器建立的解析器例項啟用指定的 JsonGenerator.Features。
50ObjectMapper enable(JsonParser.Feature... features) - 此方法用於為該物件對映器建立的解析器例項啟用指定的 JsonParser.Features。
51ObjectMapper enable(MapperFeature... f) - 此方法用於啟用指定的 MapperConfig 功能。
52ObjectMapper enable(SerializationFeature f) - 此方法用於啟用指定的 DeserializationConfig 功能。
53ObjectMapper enable(SerializationFeature first, SerializationFeature... f) - 此方法用於啟用指定的 DeserializationConfig 功能。
54ObjectMapper enableDefaultTyping() - 此便捷方法等效於呼叫
55ObjectMapper enableDefaultTyping(ObjectMapper.DefaultTyping dti) - 此便捷方法等效於呼叫
56ObjectMapper enableDefaultTyping(ObjectMapper.DefaultTyping applicability, JsonTypeInfo.As includeAs) - 此方法用於啟用型別資訊的自動包含,這對於多型型別的正確反序列化是必需的(除非型別已使用 JsonTypeInfo 進行註釋)。
57ObjectMapper enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping applicability, String propertyName) - 此方法用於啟用型別資訊的自動包含——對於多型型別的正確反序列化是必需的(除非型別已使用 JsonTypeInfo 進行註釋)——使用“As.PROPERTY”包含機制以及指定用於包含的屬性名稱(預設值為“@class”,因為預設型別資訊始終使用類名作為型別識別符號)。
58ObjectMapper findAndRegisterModules() - 此便捷方法在功能上等效於:mapper.registerModules(mapper.findModules());
59Class<?> findMixInClassFor(Class<?> cls)
60static List<Module> findModules() - 此方法用於使用 JDK ServiceLoader 機制以及模組提供的 SPI 來查詢可用的模組。
61static List<Module> findModules(ClassLoader classLoader) - 此方法用於使用 JDK ServiceLoader 機制以及模組提供的 SPI 來查詢可用的模組。
62DateFormat getDateFormat()
63DeserializationConfig getDeserializationConfig() - 此方法返回共享的預設 DeserializationConfig 物件,該物件定義反序列化的配置設定。
64DeserializationContext getDeserializationContext() - 此方法用於獲取當前的 DeserializationContext。
65JsonFactory getFactory() - 此方法可用於獲取該對映器使用的 JsonFactory,如果需要構造 JsonParsers 和/或 JsonGenerators。
66InjectableValues getInjectableValues()
67JsonFactory getJsonFactory() - 已棄用。自 2.1 版起:請改用 getFactory()。
68JsonNodeFactory getNodeFactory() - 此方法可用於獲取該對映器在直接為樹構造根 JsonNode 例項時將使用的 JsonNodeFactory。
69PropertyNamingStrategy getPropertyNamingStrategy()
70SerializationConfig getSerializationConfig() - 此方法返回共享的預設 SerializationConfig 物件,該物件定義序列化的配置設定。
71SerializerFactory getSerializerFactory() - 此方法用於獲取當前的 SerializerFactory。
72SerializerProvider getSerializerProvider() - 用於訪問“藍圖”(或工廠)例項的訪問器,透過呼叫 DefaultSerializerProvider.createInstance(com.fasterxml.jackson.databind.SerializationConfig, com.fasterxml.jackson.databind.ser.SerializerFactory) 建立例項。
73SerializerProvider getSerializerProviderInstance() - 用於構造和返回可用於訪問序列化器的 SerializerProvider 例項的訪問器。
74SubtypeResolver getSubtypeResolver() - 此方法用於訪問正在使用的子型別解析器。
75TypeFactory getTypeFactory() - 用於獲取當前已配置的 TypeFactory 例項的訪問器。
76VisibilityChecker<?> getVisibilityChecker() - 此方法用於訪問當前已配置的可見性檢查器;該物件用於確定是否可以自動檢測給定的屬性元素(方法、欄位、建構函式)。
77boolean isEnabled(DeserializationFeature f) - 此方法用於檢查是否啟用了給定的反序列化特定功能。
78boolean isEnabled(JsonFactory.Feature f) - 方便方法,等效於
79boolean isEnabled(JsonGenerator.Feature f)
80boolean isEnabled(JsonParser.Feature f)
81boolean isEnabled(MapperFeature f) - 此方法用於檢查是否啟用了給定的 MapperFeature。
82boolean isEnabled(SerializationFeature f) - 此方法用於檢查是否啟用了給定的序列化特定功能。
83int mixInCount()
84ObjectReader reader() - 用於使用預設設定構造 ObjectReader 的工廠方法。
85ObjectReader reader(Base64Variant defaultBase64) - 用於構造將對 Base64 編碼的二進位制資料使用指定的 Base64 編碼變體的 ObjectReader 的工廠方法。
86ObjectReader reader(Class<?> type) - 已棄用。自 2.5 版起,請改用 readerFor(Class) 。
87ObjectReader reader(ContextAttributes attrs) - 用於構造將使用指定的預設屬性的 ObjectReader 的工廠方法。
88ObjectReader reader(DeserializationFeature feature) - 用於構造已啟用指定功能的 ObjectReader 的工廠方法(與該對映器例項具有的設定相比)。
89ObjectReader reader(DeserializationFeature first, DeserializationFeature... other) - 用於構造已啟用指定功能的 ObjectReader 的工廠方法(與該對映器例項具有的設定相比)。
90ObjectReader reader(FormatSchema schema) - 用於構造將特定架構物件傳遞給用於讀取內容的 JsonParser 的 ObjectReader 的工廠方法。
91ObjectReader reader(InjectableValues injectableValues) - 用於構造將使用指定的注入值的 ObjectReader 的工廠方法。
92ObjectReader reader(JavaType type) - 已棄用。自 2.5 版起,請改用 readerFor(JavaType) 。
93ObjectReader reader(JsonNodeFactory f) - 用於構造將使用指定的 JsonNodeFactory 來構造 JSON 樹的 ObjectReader 的工廠方法。
94ObjectReader reader(TypeReference<?> type) - 已棄用。自 2.5 版起,請改用 readerFor(TypeReference) 。
95ObjectReader readerFor(Class<?> type) - 用於構造將讀取或更新指定型別例項的 ObjectReader 的工廠方法
96ObjectReader readerFor(JavaType type) - 用於構造將讀取或更新指定型別例項的 ObjectReader 的工廠方法
97ObjectReader readerFor(TypeReference<?> type) - 用於構造將讀取或更新指定型別例項的 ObjectReader 的工廠方法
98ObjectReader readerForUpdating(Object valueToUpdate) - 用於構造將使用 JSON 資料更新給定物件(通常是 Bean,但也可以是集合或對映,但不是陣列)的 ObjectReader 的工廠方法。
99ObjectReader readerWithView(Class<?> view) - 用於構造將使用指定的 JSON 檢視(過濾器)反序列化物件的 ObjectReader 的工廠方法。
100JsonNode readTree(byte[] content) - 此方法將 JSON 內容反序列化為使用一組 JsonNode 例項表達的樹。
101JsonNode readTree(File file) - 此方法將 JSON 內容反序列化為使用一組 JsonNode 例項表達的樹。
102JsonNode readTree(InputStream in) - 此方法將 JSON 內容反序列化為使用一組 JsonNode 例項表達的樹。
103<T extends TreeNode> T readTree(JsonParser p) - 此方法將 JSON 內容反序列化為使用一組 JsonNode 例項表達的樹。
104JsonNode readTree(Reader r) - 此方法將 JSON 內容反序列化為使用一組 JsonNode 例項表達的樹。
105JsonNode readTree(String content) - 此方法將 JSON 內容反序列化為使用一組 JsonNode 例項表達的樹。
106JsonNode readTree(URL source) - 此方法將 JSON 內容反序列化為使用一組 JsonNode 例項表達的樹。
107<T> T readValue(byte[] src, Class<T> valueType)
108<T> T readValue(byte[] src, int offset, int len, Class<T> 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<T> T readValue(File src, Class<T> valueType) - 此方法將給定檔案中的 JSON 內容反序列化為給定的 Java 型別。
116<T> T readValue(File src, JavaType valueType) - 此方法將給定檔案中的 JSON 內容反序列化為給定的 Java 型別。
117<T> 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<T> T readValue(JsonParser p, Class<T> valueType) - **此方法將 JSON 內容反序列化為非容器型別(它可以是陣列型別):通常是 bean、陣列或包裝型別(如 Boolean)。**
122<T> T readValue(JsonParser p, JavaType valueType) - 型別安全的過載方法,基本上是 readValue(JsonParser, Class) 的別名。
123<T> T readValue(JsonParser p, ResolvedType valueType) - 此方法將 JSON 內容反序列化為 Java 型別,對該型別的引用作為引數傳遞。
124<T> T readValue(JsonParser p, TypeReference<?> 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<T> T readValue(String content, Class<T> valueType) - 此方法將給定 JSON 內容字串中的 JSON 內容反序列化。
128<T> T readValue(String content, JavaType valueType) - 此方法將給定 JSON 內容字串中的 JSON 內容反序列化。
129<T> T readValue(String content, TypeReference valueTypeRef) - 此方法將給定 JSON 內容字串中的 JSON 內容反序列化。
130<T> T readValue(URL src, Class<T> valueType) - 此方法將給定資源中的 JSON 內容反序列化為給定的 Java 型別。
131<T> T readValue(URL src, JavaType valueType)
132<T> T readValue(URL src, TypeReference valueTypeRef) - 此方法將給定資源中的 JSON 內容反序列化為給定的 Java 型別。
133<T> MappingIterator<T> readValues(JsonParser p, Class<T> valueType) - 方便方法,在功能上等效於
134<T> MappingIterator<T> readValues(JsonParser p, JavaType valueType) - 方便方法,在功能上等效於
135<T> MappingIterator<T> readValues(JsonParser p, ResolvedType valueType) - 方便方法,在功能上等效於
136<T> MappingIterator<T> readValues(JsonParser p, TypeReference<?>valueTypeRef) - 此方法用於從解析器流中讀取物件序列。
137ObjectMapper registerModule(Module module) - 此方法用於註冊可以擴充套件此對映器提供的功能的模組;例如,透過新增自定義序列化器和反序列化器的提供程式。
138ObjectMapper registerModules(Iterable<Module> modules) - 此便捷方法用於按順序註冊指定的模組;在功能上等效於
139ObjectMapper registerModules(Module... modules) - 此便捷方法用於按順序註冊指定的模組;在功能上等效於
140void registerSubtypes(NamedType... types) - 此方法用於註冊指定的類作為子型別,以便基於型別的解析可以將超型別連結到子型別(作為使用註釋的替代方法)。
141ObjectMapper setAnnotationIntrospector(AnnotationIntrospector ai) - 此方法用於設定此對映器例項在序列化和反序列化中使用的 AnnotationIntrospector。
142ObjectMapper setAnnotationIntrospectors(AnnotationIntrospector serializerAI, AnnotationIntrospector deserializerAI) - 此方法用於更改此對映器例項在序列化和反序列化過程中使用的 AnnotationIntrospector 例項,分別指定它們以便可以對不同方面使用不同的內省。
143ObjectMapper setBase64Variant(Base64Variant v) - 此方法將配置 byte[] 序列化器和反序列化器將使用的預設 Base64Variant。
144ObjectMapper setConfig(DeserializationConfig config) - 此方法允許覆蓋底層的 DeserializationConfig 物件。
145ObjectMapper setConfig(SerializationConfig config) - 此方法允許覆蓋底層的 SerializationConfig 物件,其中包含特定於序列化的配置設定。
146ObjectMapper setDateFormat(DateFormat dateFormat) - 此方法用於配置在將時間值序列化為字串以及從 JSON 字串反序列化時使用的預設 DateFormat。
147ObjectMapper setDefaultPrettyPrinter(PrettyPrinter pp) - 此方法用於指定在啟用“預設漂亮列印”(透過啟用 SerializationFeature.INDENT_OUTPUT)時使用的 PrettyPrinter。
148ObjectMapper setDefaultTyping(TypeResolverBuilder<?> typer) - 此方法用於啟用型別資訊的自動包含,使用指定的處理程式物件來確定這會影響哪些型別,以及資訊嵌入方式的詳細資訊。
149ObjectMapper setFilterProvider(FilterProvider filterProvider) - 此方法用於配置此對映器以使用指定的 FilterProvider 將 Filter ID 對映到實際的過濾器例項。
150Object setHandlerInstantiator(HandlerInstantiator hi) - 此方法用於配置 HandlerInstantiator,用於根據類建立處理程式(例如序列化器、反序列化器、型別和型別 ID 解析器)的例項。
151ObjectMapper setInjectableValues(InjectableValues injectableValues) - 此方法用於配置 InjectableValues,用於查詢要注入的值。
152ObjectMapper setLocale(Locale l) - 此方法用於覆蓋用於格式化的預設區域設定。
153void setMixInAnnotations(Map<Class<?>,Class<?>> sourceMixins) - 已棄用。自 2.5 版起:已被該方法的流暢形式取代;setMixIns(java.util.Map<java.lang.Class<?>, java.lang.Class<?>>)。
154ObjectMapper setMixInResolver(ClassIntrospector.MixInResolver resolver) - 此方法可以用來指定給定的解析器,用於查詢要使用的 mix-in 類,從而覆蓋直接新增的對映。
155ObjectMapper setMixIns(Map<Class<?>,Class<?>> sourceMixins) - 此方法用於定義要使用的 mix-in 註解,以增強可處理(可序列化/可反序列化)類具有的註解。
156ObjectMapper setNodeFactory(JsonNodeFactory f) - 此方法用於指定 JsonNodeFactory,用於構造根級別樹節點(透過方法 createObjectNode())。
157ObjectMapper setPropertyInclusion(JsonInclude.Value incl) - 此方法用於設定序列化的預設 POJO 屬性包含策略。
158ObjectMapper setPropertyNamingStrategy(PropertyNamingStrategy s) - 此方法用於設定要使用的自定義屬性命名策略。
159ObjectMapper setSerializationInclusion(JsonInclude.Include incl) - 簡便方法,等效於呼叫
160ObjectMapper setSerializerFactory(SerializerFactory f) - 此方法用於設定要用於構造(bean)序列化器的特定 SerializerFactory。
161ObjectMapper setSerializerProvider(DefaultSerializerProvider p) - 此方法用於設定“藍圖”SerializerProvider 例項,將其用作實際提供程式例項的基礎,用於處理 JsonSerializer 例項的快取。
162ObjectMapper setSubtypeResolver(SubtypeResolver str) - 此方法用於設定要使用的自定義子型別解析器。
163ObjectMapper setTimeZone(TimeZone tz) - 此方法用於覆蓋用於格式化的預設時區。
164ObjectMapper setTypeFactory(TypeFactory f) - 此方法可用於覆蓋此對映器使用的 TypeFactory 例項。
165ObjectMapper setVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility) - 簡便方法,允許更改底層 VisibilityCheckers 的配置,以更改自動檢測哪些型別的屬性的詳細資訊。
166ObjectMapper setVisibility(VisibilityChecker<?> vc) - 此方法用於設定當前配置的 VisibilityChecker,該物件用於確定是否可以自動檢測給定的屬性元素(方法、欄位、建構函式)。
167void setVisibilityChecker(VisibilityChecker<?> vc) - 已棄用。自 2.6 版起,請改用 setVisibility(VisibilityChecker)。
168JsonParser treeAsTokens(TreeNode n) - 此方法用於根據 JSON 樹表示構造 JsonParser。
169<T> T treeToValue(TreeNode n, Class<T> valueType) - 簡便轉換方法,它將給定 JSON 樹包含的資料繫結到特定值(通常是 bean)型別。
170<T extends JsonNode> T valueToTree(Object fromValue) - treeToValue(com.fasterxml.jackson.core.TreeNode, java.lang.Class<T>) 的反向操作;給定一個值(通常是 bean),將構造等效的 JSON 樹表示。
171Version version() - 此方法將返回儲存在包含此類的 jar 中並從中讀取的版本資訊。
172ObjectWriter writer() - 用於使用預設設定構造 ObjectWriter 的簡便方法。
173ObjectWriter writer(Base64Variant defaultBase64) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將對 Base64 編碼的二進位制資料使用指定的 Base64 編碼變體。
174ObjectWriter writer(CharacterEscapes escapes) -
175ObjectWriter writer(ContextAttributes attrs) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將使用指定的預設屬性。
176ObjectWriter writer(DateFormat df) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將使用指定的 DateFormat 序列化物件;或者,如果傳遞 null,則使用時間戳(64 位數字)。
177ObjectWriter writer(FilterProvider filterProvider) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將使用指定的過濾器提供程式序列化物件。
178ObjectWriter writer(FormatSchema schema) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將將特定的模式物件傳遞給用於寫入內容的 JsonGenerator。
179ObjectWriter writer(PrettyPrinter pp) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將使用指定的漂亮印表機進行縮排序列化物件(或者如果為 null,則不使用漂亮印表機)。
180ObjectWriter writer(SerializationFeature feature) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 啟用了指定的特性(與該對映器例項具有的設定相比)。
181ObjectWriter writer(SerializationFeature first, SerializationFeature... other) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 啟用了指定的特性(與該對映器例項具有的設定相比)。
182ObjectWriter writerFor(Class<?> rootType) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將使用指定的根型別序列化物件,而不是值的實際執行時型別。
183ObjectWriter writerFor(JavaType rootType) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將使用指定的根型別序列化物件,而不是值的實際執行時型別。
184ObjectWriter writerFor(TypeReference<?> rootType) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將使用指定的根型別序列化物件,而不是值的實際執行時型別。
185ObjectWriter writerWithDefaultPrettyPrinter() - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將使用預設的漂亮印表機進行縮排序列化物件。
186ObjectWriter writerWithType(Class<?> rootType) - 已棄用。自 2.5 版起,請改用 writerFor(Class)。
187ObjectWriter writerWithType(JavaType rootType) - 已棄用。自 2.5 版起,請改用 writerFor(JavaType)。
188ObjectWriter writerWithType(TypeReference<?> rootType) - 已棄用。自 2.5 版起,請改用 writerFor(TypeReference)。
189ObjectWriter writerWithView(Class<?> serializationView) - 用於構造 ObjectWriter 的工廠方法,該 ObjectWriter 將使用指定的 JSON 檢視(過濾器)序列化物件。
190void writeTree(JsonGenerator jgen, JsonNode rootNode) - 此方法使用提供的生成器序列化給定的 JSON 樹。
191void writeTree(JsonGenerator jgen, TreeNode rootNode)
192void writeValue(DataOutput out, Object value)
193void writeValue(File resultFile, Object value) - 此方法可用於將任何 Java 值序列化為 JSON 輸出,並將其寫入提供的 File。
194void writeValue(JsonGenerator g, Object value) - 此方法可用於將任何 Java 值序列化為 JSON 輸出,並使用提供的 JsonGenerator。
195void writeValue(OutputStream out, Object value) - 此方法可用於將任何 Java 值序列化為 JSON 輸出,並使用提供的輸出流(使用編碼 JsonEncoding.UTF8)。
196void writeValue(Writer w, Object value) - 此方法可用於將任何 Java 值序列化為 JSON 輸出,並使用提供的 Writer。
197byte[] writeValueAsBytes(Object value) - 此方法可用於將任何 Java 值序列化為位元組陣列。
198String writeValueAsString(Object value) - 此方法可用於將任何 Java 值序列化為字串。

繼承的方法

此類繼承自以下類的方法

  • java.lang.Object

ObjectMapper 示例

使用您選擇的任何編輯器在例如 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+ " ]";
   }
}

驗證結果

使用 javac 編譯器編譯類,如下所示

C:\Jackson_WORKSPACE>javac JacksonTester.java

現在執行 jacksonTester 以檢視結果

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出

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