Basic data binding (mapping) functionality that allows for reading JSON content into Java Objects (POJOs) and JSON Trees (JsonNode), as well as writing Java Objects and trees as JSON. Reading and writing (as well as related additional functionality) is accessed through ObjectMapper, ObjectReader and ObjectWriter classes. In addition to reading and writing JSON content, it is also possible to use the general databinding functionality for many other data formats, using Jackson extension modules that provide such support: if so, you typically simply construct an ObjectMapper with different underlying streaming parser, generator implementation.

The main starting point for operations is ObjectMapper, which can be used either directly (via multiple overloaded readValue, readTree, writeValue and writeTree methods, or it can be used as a configurable factory for constructing fully immutable, thread-safe and reusable ObjectReader and ObjectWriter objects.

In addition to simple reading and writing of JSON as POJOs or JSON trees (represented as JsonNode, and configurability needed to change aspects of reading/writing, mapper contains additional functionality such as:

Simplest usage is of form:

final ObjectMapper mapper = new ObjectMapper(); // can use static singleton, inject: just make sure to reuse! MyValue value = new MyValue(); // ... and configure File newState = new File("my-stuff.json"); mapper.writeValue(newState, value); // writes JSON serialization of MyValue instance // or, read MyValue older = mapper.readValue(new File("my-older-stuff.json"), MyValue.class); // Or if you prefer JSON Tree representation: JsonNode root = mapper.readTree(newState); // and find values by, for example, using a JsonPointer expression: int age = root.at("/personal/age").getValueAsInt(); 

For more usage, refer to ObjectMapper, ObjectReader and ObjectWriter Javadocs.

/** Basic data binding (mapping) functionality that allows for reading JSON content into Java Objects (POJOs) and JSON Trees ({@link com.fasterxml.jackson.databind.JsonNode}), as well as writing Java Objects and trees as JSON. Reading and writing (as well as related additional functionality) is accessed through {@link com.fasterxml.jackson.databind.ObjectMapper}, {@link com.fasterxml.jackson.databind.ObjectReader} and {@link com.fasterxml.jackson.databind.ObjectWriter} classes. In addition to reading and writing JSON content, it is also possible to use the general databinding functionality for many other data formats, using Jackson extension modules that provide such support: if so, you typically simply construct an {@link com.fasterxml.jackson.databind.ObjectMapper} with different underlying streaming parser, generator implementation. <p> The main starting point for operations is {@link com.fasterxml.jackson.databind.ObjectMapper}, which can be used either directly (via multiple overloaded <code>readValue</code>, <code>readTree</code>, <code>writeValue</code> and <code>writeTree</code> methods, or it can be used as a configurable factory for constructing fully immutable, thread-safe and reusable {@link com.fasterxml.jackson.databind.ObjectReader} and {@link com.fasterxml.jackson.databind.ObjectWriter} objects. <p> In addition to simple reading and writing of JSON as POJOs or JSON trees (represented as {@link com.fasterxml.jackson.databind.JsonNode}, and configurability needed to change aspects of reading/writing, mapper contains additional functionality such as: <ul> <li>Value conversions using {@link com.fasterxml.jackson.databind.ObjectMapper#convertValue(Object, Class)}, {@link com.fasterxml.jackson.databind.ObjectMapper#valueToTree(Object)} and {@link com.fasterxml.jackson.databind.ObjectMapper#treeToValue(com.fasterxml.jackson.core.TreeNode, Class)} methods. </li> <li>Type introspection needed for things like generation of Schemas (like JSON Schema, Avro Schema, or protoc definitions), using {@link com.fasterxml.jackson.databind.ObjectMapper#acceptJsonFormatVisitor(Class, com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper)} (note: actual handles are usually provided by various Jackson modules: mapper simply initiates calling of callbacks, based on serializers registered) </li> </ul> <p> Simplest usage is of form: <pre> final ObjectMapper mapper = new ObjectMapper(); // can use static singleton, inject: just make sure to reuse! MyValue value = new MyValue(); // ... and configure File newState = new File("my-stuff.json"); mapper.writeValue(newState, value); // writes JSON serialization of MyValue instance // or, read MyValue older = mapper.readValue(new File("my-older-stuff.json"), MyValue.class); // Or if you prefer JSON Tree representation: JsonNode root = mapper.readTree(newState); // and find values by, for example, using a {@link com.fasterxml.jackson.core.JsonPointer} expression: int age = root.at("/personal/age").getValueAsInt(); </pre> <p> For more usage, refer to {@link com.fasterxml.jackson.databind.ObjectMapper}, {@link com.fasterxml.jackson.databind.ObjectReader} and {@link com.fasterxml.jackson.databind.ObjectWriter} Javadocs. */
package com.fasterxml.jackson.databind;