org.codehaus.jackson.ObjectCodec Maven / Gradle / Ivy
package org.codehaus.jackson;
import java.io.IOException;
import org.codehaus.jackson.type.JavaType;
import org.codehaus.jackson.type.TypeReference;
/**
* Abstract class that defines the interface that {@link JsonParser} and
* {@link JsonGenerator} use to serialize and deserialize regular
* Java objects (POJOs aka Beans).
*
* The standard implementation of this class is
* {@link org.codehaus.jackson.map.ObjectMapper}.
*/
public abstract class ObjectCodec
{
protected ObjectCodec() { }
/*
/////////////////////////////////////////////////
// API for serialization (Object-to-JSON)
/////////////////////////////////////////////////
*/
/**
* 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 {@link java.lang.Boolean}).
*
* Note: this method should NOT be used if the result type is a
* container ({@link java.util.Collection} or {@link java.util.Map}.
* The reason is that due to type erasure, key and value types
* can not be introspected when using this method.
*/
public abstract T readValue(JsonParser jp, Class valueType)
throws IOException, JsonProcessingException;
/**
* 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" (see )
* and specifically needs to be used if the root type is a
* parameterized (generic) container type.
*/
public abstract T readValue(JsonParser jp, TypeReference> valueTypeRef)
throws IOException, JsonProcessingException;
/**
* Method to deserialize JSON content as tree expressed
* using set of {@link JsonNode} 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).
*/
public abstract T readValue(JsonParser jp, JavaType valueType)
throws IOException, JsonProcessingException;
/**
* Method to deserialize JSON content as tree expressed
* using set of {@link JsonNode} 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).
*/
public abstract JsonNode readTree(JsonParser jp)
throws IOException, JsonProcessingException;
/*
/////////////////////////////////////////////////
// API for de-serialization (Json-to-Object)
/////////////////////////////////////////////////
*/
/**
* Method to serialize given Java Object, using generator
* provided.
*/
public abstract void writeValue(JsonGenerator jgen, Object value)
throws IOException, JsonProcessingException;
/**
* Method to serialize given Json Tree, using generator
* provided.
*/
public abstract void writeTree(JsonGenerator jgen, JsonNode rootNode)
throws IOException, JsonProcessingException;
/*
/////////////////////////////////////////////////
// API for Tree Model handling
/////////////////////////////////////////////////
*/
/**
* Method for construct root level Object nodes
* for Tree Model instances.
*
* @since 1.2
*/
public abstract JsonNode createObjectNode();
/**
* Method for construct root level Array nodes
* for Tree Model instances.
*
* @since 1.2
*/
public abstract JsonNode createArrayNode();
/**
* Method for constructing a {@link JsonParser} for reading
* contents of a JSON tree, as if it was external serialized
* JSON content.
*
* @since 1.3
*/
public abstract JsonParser treeAsTokens(JsonNode n);
/*
* Method for constructing a {@link JsonGenerator} that can
* be used to add content to a JSON tree.
*
* @param containerNode Container node to add contents to via created generator.
* If node is not a container node (as per {@link JsonNode#isContainerNode}),
* {@link IllegalArgumentException} will be thrown
*
c public abstract JsonGenerator treeFromTokens(JsonNode containerNode)
throws IllegalArgumentException;
*/
/**
* Convenience method for converting given JSON tree into instance of specified
* value type. This is equivalent to first constructing a {@link JsonParser} to
* iterate over contents of the tree, and using that parser for data binding.
*
* @since 1.3
*/
public abstract T treeToValue(JsonNode n, Class valueType)
throws IOException, JsonProcessingException;
}