Package com.fasterxml.jackson.core

# Class ObjectCodec

java.lang.Object
com.fasterxml.jackson.core.TreeCodec
com.fasterxml.jackson.core.ObjectCodec

All Implemented Interfaces:
  `Versioned`

public abstract class ObjectCodec extends TreeCodec implements Versioned
Abstract class that defines the interface that `JsonParser` and `JsonGenerator` use to serialize and deserialize regular Java objects (POJOs aka Beans).

The standard implementation of this class is `com.fasterxml.jackson.databind.ObjectMapper`, defined in the "jackson-databind".

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`ObjectCodec()`

## Method Summary

Modifier and Type
Method
Description
`abstract TreeNode`
`createArrayNode()`
Method for construct root level Array nodes for Tree Model instances.
`abstract TreeNode`
`createObjectNode()`
Method for construct root level Object nodes for Tree Model instances.
`JsonFactory`
`getFactory()`
Accessor for finding underlying data format factory (`JsonFactory`) codec will use for data binding.
`JsonFactory`
`getJsonFactory()`
Deprecated.
Use `getFactory()` instead.
`abstract <T extends TreeNode>
T`
`readTree(JsonParser p)`
Method for deserializing JSON content as tree expressed using set of `TreeNode` instances.
`abstract <T> T`
`readValue(JsonParser p, ResolvedType valueType)`
Method to deserialize JSON content into a POJO, type specified with fully resolved type object (so it can be a generic type, including containers like `Collection` and `Map`).
`abstract <T> T`
`readValue(JsonParser p, TypeReference<T> valueTypeRef)`
Method to deserialize JSON content into a Java type, reference to which is passed as argument.
`abstract <T> T`
`readValue(JsonParser p, Class<T> 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`).
`abstract <T> Iterator<T>`
`readValues(JsonParser p, ResolvedType valueType)`
Method for reading sequence of Objects from parser stream, all with same specified value type.
`abstract <T> Iterator<T>`
`readValues(JsonParser p, TypeReference<T> valueTypeRef)`
Method for reading sequence of Objects from parser stream, all with same specified value type.
`abstract <T> Iterator<T>`
`readValues(JsonParser p, Class<T> valueType)`
Method for reading sequence of Objects from parser stream, all with same specified value type.
`abstract JsonParser`
`treeAsTokens(TreeNode n)`
Method for constructing a `JsonParser` for reading contents of a JSON tree, as if it was external serialized JSON content.
`abstract <T> T`
`treeToValue(TreeNode n, Class<T> valueType)`
Convenience method for converting given JSON tree into instance of specified value type.
`abstract Version`
`version()`
Method called to detect version of the component that implements this interface; returned version should never be null, but may return specific "not available" instance (see `Version` for details).
`abstract void`
`writeTree(JsonGenerator gen, TreeNode tree)`
Method for serializing JSON content from given Tree instance, using specified generator.
`abstract void`
`writeValue(JsonGenerator gen, Object value)`
Method to serialize given Java Object, using generator provided.

### Methods inherited from class com.fasterxml.jackson.core.TreeCodec

`missingNode, nullNode`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ObjectCodec

protected ObjectCodec()

## Method Details

### version

public abstract Version version()
Description copied from interface: `Versioned`
Method called to detect version of the component that implements this interface; returned version should never be null, but may return specific "not available" instance (see `Version` for details).

Specified by:
  `version` in interface `Versioned`
Returns:
  Version of the component

### readValue

public abstract <T> T readValue(JsonParser p, Class<T> valueType) throws IOException
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`).

Note: this method should NOT be used if the result type is a container (`Collection` or `Map`. The reason is that due to type erasure, key and value types can not be introspected when using this method.

Type Parameters:
  `T` - Nominal parameter for target type
Parameters:
  `p` - Parser to use for decoding content to bind
  `valueType` - Java value type to bind content to
Returns:
  Value deserialized
Throws:
  `IOException` - for low-level read issues, or `JsonParseException` for decoding problems

### readValue

public abstract <T> T readValue(JsonParser p, TypeReference<T> valueTypeRef) throws IOException
Method to deserialize JSON content into a Java type, reference to which is passed as argument. Type is passed using so-called "super type token" and specifically needs to be used if the root type is a parameterized (generic) container type.

Type Parameters:
  `T` - Nominal parameter for target type
Parameters:
  `p` - Parser to use for decoding content to bind
  `valueTypeRef` - Java value type to bind content to
Returns:
  Value deserialized
Throws:
  `IOException` - for low-level read issues, or `JsonParseException` for decoding problems

### readValue

public abstract <T> T readValue(JsonParser p, ResolvedType valueType) throws IOException
Method to deserialize JSON content into a POJO, type specified with fully resolved type object (so it can be a generic type, including containers like `Collection` and `Map`).

Type Parameters:
  `T` - Nominal parameter for target type
Parameters:
  `p` - Parser to use for decoding content to bind
  `valueType` - Java value type to bind content to
Returns:
  Value deserialized
Throws:
  `IOException` - for low-level read issues, or `JsonParseException` for decoding problems

### readValues

public abstract <T> Iterator<T> readValues(JsonParser p, Class<T> valueType) throws IOException
Method for reading sequence of Objects from parser stream, all with same specified value type.

Type Parameters:
  `T` - Nominal parameter for target type
Parameters:
  `p` - Parser to use for decoding content to bind
  `valueType` - Java value type to bind content to
Returns:
  Iterator for incrementally deserializing values
Throws:
  `IOException` - for low-level read issues, or `JsonParseException` for decoding problems

### readValues

public abstract <T> Iterator<T> readValues(JsonParser p, TypeReference<T> valueTypeRef) throws IOException
Method for reading sequence of Objects from parser stream, all with same specified value type.

Type Parameters:
  `T` - Nominal parameter for target type
Parameters:
  `p` - Parser to use for decoding content to bind
  `valueTypeRef` - Java value type to bind content to
Returns:
  Iterator for incrementally deserializing values
Throws:
  `IOException` - for low-level read issues, or `JsonParseException` for decoding problems

### readValues

public abstract <T> Iterator<T> readValues(JsonParser p, ResolvedType valueType) throws IOException
Method for reading sequence of Objects from parser stream, all with same specified value type.

Type Parameters:
  `T` - Nominal parameter for target type
Parameters:
  `p` - Parser to use for decoding content to bind
  `valueType` - Java value type to bind content to
Returns:
  Iterator for incrementally deserializing values
Throws:
  `IOException` - for low-level read issues, or `JsonParseException` for decoding problems

### writeValue

public abstract void writeValue(JsonGenerator gen, Object value) throws IOException
Method to serialize given Java Object, using generator provided.

Parameters:
  `gen` - Generator to use for serializing value
  `value` - Value to serialize
Throws:
  `IOException` - for low-level write issues, or `JsonGenerationException` for decoding problems

### readTree

public abstract <T extends TreeNode> T readTree(JsonParser p) throws IOException
Method for deserializing JSON content as tree expressed using set of `TreeNode` instances. Returns root of the resulting tree (where root can consist of just a single node if the current event is a value event, not container). Empty or whitespace documents return null.

Specified by:
  `readTree` in class `TreeCodec`
Returns:
  next tree from `p`, or `null` if empty.
Throws:
  `IOException` - for low-level read issues, or `JsonParseException` for decoding problems

### writeTree

public abstract void writeTree(JsonGenerator gen, TreeNode tree) throws IOException
Method for serializing JSON content from given Tree instance, using specified generator.

Specified by:
  `writeTree` in class `TreeCodec`
Parameters:
  `gen` - Generator to use for serializing value
  `tree` - Tree to serialize
Throws:
  `IOException` - for low-level write issues, or `JsonGenerationException` for decoding problems

### createObjectNode

public abstract TreeNode createObjectNode()
Method for construct root level Object nodes for Tree Model instances.

Specified by:
  `createObjectNode` in class `TreeCodec`
Returns:
  Object node created

### createArrayNode

public abstract TreeNode createArrayNode()
Method for construct root level Array nodes for Tree Model instances.

Specified by:
  `createArrayNode` in class `TreeCodec`
Returns:
  Array node created

### treeAsTokens

public abstract JsonParser treeAsTokens(TreeNode n)
Method for constructing a `JsonParser` for reading contents of a JSON tree, as if it was external serialized JSON content.

Specified by:
  `treeAsTokens` in class `TreeCodec`
Parameters:
  `n` - Content to traverse over
Returns:
  Parser constructed for traversing over contents of specified node

### treeToValue

public abstract <T> T treeToValue(TreeNode n, Class<T> valueType) throws JsonProcessingException
Convenience method for converting given JSON tree into instance of specified value type. This is equivalent to first constructing a `JsonParser` to iterate over contents of the tree, and using that parser for data binding.

Type Parameters:
  `T` - Nominal parameter for target type
Parameters:
  `n` - Tree to convert
  `valueType` - Java target value type to convert content to
Returns:
  Converted value instance
Throws:
  `JsonProcessingException` - if structural conversion fails

### getJsonFactory

@Deprecated public JsonFactory getJsonFactory()
Deprecated.
Use `getFactory()` instead.

Returns:
  Underlying `JsonFactory` instance

### getFactory

public JsonFactory getFactory()
Accessor for finding underlying data format factory (`JsonFactory`) codec will use for data binding.

Returns:
  Underlying `JsonFactory` instance