/** 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;