CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-fasterxml-jackson-core--jackson-databind

General data-binding functionality for Jackson: works on core streaming API

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

index.mddocs/

Jackson Databind

Jackson Databind provides data-binding functionality for Jackson JSON processing - converts between Java objects and JSON. It works on top of Jackson's core streaming API and provides functionality for reading and writing JSON to/from POJOs (Plain Old Java Objects), a general-purpose JSON Tree Model, and advanced object concepts like polymorphism and object identity.

Package Information

  • Package Name: com.fasterxml.jackson.core/jackson-databind
  • Package Type: maven
  • Language: Java
  • Installation:
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.20.0</version>
    </dependency>

Core Imports

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.JavaType;

Basic Usage

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;

// Create ObjectMapper instance
ObjectMapper mapper = new ObjectMapper();

// Read JSON from string to POJO
String json = "{\"name\":\"John\", \"age\":30}";
Person person = mapper.readValue(json, Person.class);

// Write POJO to JSON string
String output = mapper.writeValueAsString(person);

// Read JSON as tree model
JsonNode tree = mapper.readTree(json);
String name = tree.get("name").asText();

Architecture

Jackson Databind is built around several key components:

  • ObjectMapper: Main entry point for all JSON processing operations
  • JsonNode: Tree model for representing JSON in memory
  • ObjectReader/ObjectWriter: Builder-style APIs for configured reading/writing
  • JavaType: Type system for handling generic types and collections
  • Serialization Framework: Pluggable serializers for converting objects to JSON
  • Deserialization Framework: Pluggable deserializers for converting JSON to objects
  • Configuration System: Features and settings for customizing behavior
  • Annotation System: Annotations for controlling serialization/deserialization

Capabilities

Object Mapping

Core functionality for reading and writing JSON to/from Java objects, including POJOs, collections, and maps.

public class ObjectMapper extends ObjectCodec implements Versioned, Serializable {
    // Reading methods
    public <T> T readValue(String content, Class<T> valueType) throws JsonProcessingException;
    public <T> T readValue(String content, TypeReference<T> valueTypeRef) throws JsonProcessingException;
    public <T> T readValue(String content, JavaType valueType) throws JsonProcessingException;
    public <T> T readValue(InputStream src, Class<T> valueType) throws IOException, StreamReadException, DatabindException;
    public <T> T readValue(Reader src, Class<T> valueType) throws IOException, StreamReadException, DatabindException;
    public <T> T readValue(URL src, Class<T> valueType) throws IOException, StreamReadException, DatabindException;
    public <T> T readValue(File src, Class<T> valueType) throws IOException, StreamReadException, DatabindException;
    
    // Writing methods
    public String writeValueAsString(Object value) throws JsonProcessingException;
    public byte[] writeValueAsBytes(Object value) throws JsonProcessingException;
    public void writeValue(OutputStream out, Object value) throws IOException, StreamWriteException, DatabindException;
    public void writeValue(Writer w, Object value) throws IOException, StreamWriteException, DatabindException;
    public void writeValue(File resultFile, Object value) throws IOException, StreamWriteException, DatabindException;
    
    // Tree model methods
    public JsonNode readTree(String content) throws JsonProcessingException;
    public JsonNode readTree(InputStream in) throws IOException, StreamReadException, DatabindException;
    public JsonNode readTree(Reader r) throws IOException, StreamReadException, DatabindException;
    public void writeTree(JsonGenerator g, JsonNode rootNode) throws IOException, StreamWriteException, DatabindException;
    
    // Conversion methods
    public <T> T convertValue(Object fromValue, Class<T> toValueType) throws IllegalArgumentException;
    public <T> T convertValue(Object fromValue, TypeReference<T> toValueTypeRef) throws IllegalArgumentException;
    public <T> T convertValue(Object fromValue, JavaType toValueType) throws IllegalArgumentException;
    
    // Factory methods for readers/writers
    public ObjectReader reader();
    public ObjectReader readerFor(Class<?> type);
    public ObjectReader readerFor(JavaType type);
    public ObjectReader readerFor(TypeReference<?> type);
    public ObjectWriter writer();
    public ObjectWriter writerFor(Class<?> type);
    public ObjectWriter writerFor(JavaType type);
    
    // Additional reading methods
    public <T> T readValue(JsonParser p, Class<T> valueType) throws IOException, StreamReadException, DatabindException;
    public <T> T readValue(JsonParser p, TypeReference<T> valueTypeRef) throws IOException, StreamReadException, DatabindException;
    public <T> T readValue(JsonParser p, JavaType valueType) throws IOException, StreamReadException, DatabindException;
    
    // Additional writing methods
    public void writeValue(JsonGenerator g, Object value) throws IOException, StreamWriteException, DatabindException;
    
    // Configuration methods - Core Features
    public ObjectMapper configure(SerializationFeature f, boolean state);
    public ObjectMapper enable(SerializationFeature feature);
    public ObjectMapper enable(SerializationFeature first, SerializationFeature... f);
    public ObjectMapper disable(SerializationFeature feature);
    public ObjectMapper disable(SerializationFeature first, SerializationFeature... f);
    public ObjectMapper configure(DeserializationFeature f, boolean state);
    public ObjectMapper enable(DeserializationFeature feature);
    public ObjectMapper enable(DeserializationFeature first, DeserializationFeature... f);
    public ObjectMapper disable(DeserializationFeature feature);
    public ObjectMapper disable(DeserializationFeature first, DeserializationFeature... f);
    
    // Module registration
    public ObjectMapper registerModule(Module module);
    public ObjectMapper registerModules(Module... modules);
    public ObjectMapper registerModules(Iterable<? extends Module> modules);
    public ObjectMapper findAndRegisterModules();
    
    // Copy methods
    public ObjectMapper copy();
    
    // Key configuration setters
    public ObjectMapper addMixIn(Class<?> target, Class<?> mixinSource);
    public ObjectMapper setPropertyNamingStrategy(PropertyNamingStrategy s);
    public ObjectMapper setSerializationInclusion(JsonInclude.Include incl);
    public ObjectMapper setVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility);
}

Object Mapping

JSON Tree Model

Tree model API for working with JSON as in-memory tree structures, providing DOM-like navigation and manipulation.

public abstract class JsonNode implements TreeNode, Iterable<JsonNode> {
    // Navigation methods
    public abstract JsonNode get(int index);
    public JsonNode get(String fieldName);
    public abstract JsonNode path(String fieldName);
    public abstract JsonNode path(int index);
    public JsonNode at(String jsonPtrExpr);
    public JsonNode at(JsonPointer ptr);
    
    // Type checking methods
    public abstract boolean isArray();
    public abstract boolean isObject();
    public final boolean isValueNode();
    public final boolean isContainerNode();
    public final boolean isMissingNode();
    public boolean isNull();
    public boolean isTextual();
    public boolean isNumber();
    public boolean isBoolean();
    
    // Value extraction methods
    public String asText();
    public String asText(String defaultValue);
    public int asInt();
    public int asInt(int defaultValue);
    public long asLong();
    public long asLong(long defaultValue);
    public double asDouble();
    public double asDouble(double defaultValue);
    public boolean asBoolean();
    public boolean asBoolean(boolean defaultValue);
    
    // Raw value getters
    public String textValue();
    public byte[] binaryValue() throws IOException;
    public boolean booleanValue();
    public Number numberValue();
    public short shortValue();
    public int intValue();
    public long longValue();
    public float floatValue();
    public double doubleValue();
    public BigDecimal decimalValue();
    public BigInteger bigIntegerValue();
    
    // Additional type checking methods
    public boolean isShort();
    public boolean isInt();
    public boolean isLong();
    public boolean isFloat();
    public boolean isDouble();
    public boolean isBigDecimal();
    public boolean isBigInteger();
    public boolean isIntegralNumber();
    public boolean isFloatingPointNumber();
    public final boolean isPojo();
    
    // Field/value existence checking
    public boolean has(String fieldName);
    public boolean has(int index);
    public boolean hasNonNull(String fieldName);
    public boolean hasNonNull(int index);
    
    // Tree search methods
    public abstract JsonNode findValue(String fieldName);
    public final List<JsonNode> findValues(String fieldName);
    public final List<String> findValuesAsText(String fieldName);
    public abstract JsonNode findParent(String fieldName);
    public final List<JsonNode> findParents(String fieldName);
    
    // Tree modification methods
    public abstract <T extends JsonNode> T deepCopy();
    public JsonNode withObject(JsonPointer ptr);
    public JsonNode withObject(String expr);
    public JsonNode withObjectProperty(String propertyName);
    public JsonNode withArray(JsonPointer ptr);
    public JsonNode withArray(String expr);
    public JsonNode withArrayProperty(String propertyName);
    
    // Container methods
    public abstract int size();
    public abstract boolean isEmpty();
    public Iterator<String> fieldNames();
    public Iterator<Map.Entry<String, JsonNode>> fields();
    public Iterator<JsonNode> elements();
}

JSON Tree Model

Type System

Type representation system for handling generic types, collections, and complex type hierarchies safely.

public abstract class JavaType extends ResolvedType implements Serializable {
    // Type inspection
    public abstract Class<?> getRawClass();
    public abstract boolean hasRawClass(Class<?> clz);
    public final boolean hasRawClass(Class<?> clz);
    public final boolean isTypeOrSubTypeOf(Class<?> clz);
    public final boolean isTypeOrSuperTypeOf(Class<?> clz);
    public abstract boolean isArrayType();
    public abstract boolean isCollectionLikeType();
    public abstract boolean isMapLikeType();
    public abstract boolean hasContentType();
    public boolean isAbstract();
    public boolean isConcrete();
    public boolean isThrowable();
    public final boolean isEnumType();
    public final boolean isRecordType();
    public boolean isPrimitive();
    public final boolean isFinal();
    
    // Generic type handling
    public abstract JavaType getContentType();
    public abstract JavaType getKeyType();
    public abstract int containedTypeCount();
    public abstract JavaType containedType(int index);
    public abstract String containedTypeName(int index);
    public abstract TypeBindings getBindings();
    public abstract JavaType getSuperClass();
    public abstract List<JavaType> getInterfaces();
    public abstract JavaType[] findSuperTypes(Class<?> erasedTarget);
    public abstract JavaType findTypeParameters(Class<?> expType);
    
    // Type manipulation
    public abstract JavaType withContentType(JavaType contentType);
    public JavaType withTypeHandler(Object h);
    public JavaType withContentTypeHandler(Object h);
    public JavaType withValueHandler(Object h);
    public JavaType withContentValueHandler(Object h);
    public JavaType withHandlersFrom(JavaType src);
    public abstract JavaType refine(Class<?> rawType, TypeBindings bindings, JavaType superClass, JavaType[] superInterfaces);
    public JavaType forcedNarrowBy(Class<?> subclass);
    
    // Factory access
    public static JavaType constructType(Type type);
}

Type System

Serialization

Framework for converting Java objects to JSON with customizable serializers and configuration.

public abstract class JsonSerializer<T> {
    // Core serialization
    public abstract void serialize(T value, JsonGenerator gen, SerializerProvider serializers) throws IOException;
    public void serializeWithType(T value, JsonGenerator gen, SerializerProvider serializers, TypeSerializer typeSer) throws IOException;
    
    // Metadata methods
    public Class<T> handledType();
    public boolean isEmpty(SerializerProvider provider, T value);
    public boolean usesObjectId();
    
    // Contextual serialization
    public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException;
    
    // Schema support
    public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType type) throws JsonMappingException;
}

Serialization

Deserialization

Framework for converting JSON to Java objects with customizable deserializers and configuration.

public abstract class JsonDeserializer<T> {
    // Core deserialization
    public abstract T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException;
    public T deserializeWithType(JsonParser p, DeserializationContext ctxt, TypeDeserializer typeDeserializer) throws IOException;
    
    // Null and empty value handling
    public T getNullValue(DeserializationContext ctxt) throws JsonMappingException;
    public T getEmptyValue(DeserializationContext ctxt) throws JsonMappingException;
    public AccessPattern getNullAccessPattern();
    public AccessPattern getEmptyAccessPattern();
    
    // Metadata methods
    public Class<?> handledType();
    public boolean isCachable();
    public ObjectIdReader getObjectIdReader();
    
    // Contextual deserialization
    public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property) throws JsonMappingException;
}

Deserialization

Configuration

Configuration system for customizing Jackson behavior through features, settings, and overrides.

public enum SerializationFeature implements ConfigFeature {
    WRAP_ROOT_VALUE,
    INDENT_OUTPUT,
    FAIL_ON_EMPTY_BEANS,
    FAIL_ON_SELF_REFERENCES,
    WRAP_EXCEPTIONS,
    FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS,
    WRITE_SELF_REFERENCES_AS_NULL,
    CLOSE_CLOSEABLE,
    FLUSH_AFTER_WRITE_VALUE,
    WRITE_DATES_AS_TIMESTAMPS,
    WRITE_DATE_KEYS_AS_TIMESTAMPS,
    WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS,
    WRITE_ENUMS_USING_TO_STRING,
    WRITE_ENUMS_USING_INDEX,
    WRITE_ENUM_KEYS_USING_INDEX,
    WRITE_NULL_MAP_VALUES,
    WRITE_EMPTY_JSON_ARRAYS,
    WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED,
    WRITE_BIGDECIMAL_AS_PLAIN,
    WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS,
    ORDER_MAP_ENTRIES_BY_KEYS,
    USE_EQUALITY_FOR_OBJECT_ID,
    WRITE_DATES_WITH_ZONE_ID,
    WRITE_DATES_WITH_CONTEXT_TIME_ZONE,
    WRITE_DURATIONS_AS_TIMESTAMPS,
    FAIL_ON_ORDER_MAP_BY_INCOMPARABLE_KEY,
    EAGER_SERIALIZER_FETCH;
    
    public boolean enabledByDefault();
    public int getMask();
    public boolean enabledIn(int flags);
}

public enum DeserializationFeature implements ConfigFeature {
    USE_BIG_DECIMAL_FOR_FLOATS,
    USE_BIG_INTEGER_FOR_INTS,
    USE_LONG_FOR_INTS,
    USE_JAVA_ARRAY_FOR_JSON_ARRAY,
    FAIL_ON_UNKNOWN_PROPERTIES,
    FAIL_ON_NULL_FOR_PRIMITIVES,
    FAIL_ON_NUMBERS_FOR_ENUMS,
    FAIL_ON_INVALID_SUBTYPE,
    FAIL_ON_READING_DUP_TREE_KEY,
    FAIL_ON_IGNORED_PROPERTIES,
    FAIL_ON_UNRESOLVED_OBJECT_IDS,
    FAIL_ON_MISSING_CREATOR_PROPERTIES,
    FAIL_ON_NULL_CREATOR_PROPERTIES,
    FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY,
    FAIL_ON_TRAILING_TOKENS,
    WRAP_EXCEPTIONS,
    ACCEPT_SINGLE_VALUE_AS_ARRAY,
    UNWRAP_SINGLE_VALUE_ARRAYS,
    UNWRAP_ROOT_VALUE,
    ACCEPT_EMPTY_STRING_AS_NULL_OBJECT,
    ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT,
    ACCEPT_FLOAT_AS_INT,
    READ_ENUMS_USING_TO_STRING,
    READ_UNKNOWN_ENUM_VALUES_AS_NULL,
    READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE,
    READ_DATE_TIMESTAMPS_AS_NANOSECONDS,
    ADJUST_DATES_TO_CONTEXT_TIME_ZONE,
    EAGER_DESERIALIZER_FETCH,
    FAIL_ON_SUBTYPE_CLASS_NOT_REGISTERED,
    FAIL_ON_UNEXPECTED_VIEW_PROPERTIES,
    FAIL_ON_UNKNOWN_INJECT_VALUE;
    
    public boolean enabledByDefault();
    public int getMask();  
    public boolean enabledIn(int flags);
}

Configuration

Annotations

Jackson databind annotations for controlling serialization and deserialization behavior.

@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonSerialize {
    Class<? extends JsonSerializer> using() default JsonSerializer.None.class;
    Class<? extends JsonSerializer> contentUsing() default JsonSerializer.None.class;
    Class<? extends JsonSerializer> keyUsing() default JsonSerializer.None.class;
    Class<? extends JsonSerializer> nullsUsing() default JsonSerializer.None.class;
    Class<?> as() default Void.class;
    Class<?> keyAs() default Void.class;
    Class<?> contentAs() default Void.class;
    JsonSerialize.Inclusion include() default JsonSerialize.Inclusion.DEFAULT_INCLUSION;
    JsonSerialize.Typing typing() default JsonSerialize.Typing.DEFAULT_TYPING;
    
    public enum Inclusion {
        ALWAYS, NON_NULL, NON_ABSENT, NON_EMPTY, NON_DEFAULT, CUSTOM, USE_DEFAULTS;
    }
    
    public enum Typing {
        DYNAMIC, STATIC, DEFAULT_TYPING;
    }
}

@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonDeserialize {
    Class<? extends JsonDeserializer> using() default JsonDeserializer.None.class;
    Class<? extends JsonDeserializer> contentUsing() default JsonDeserializer.None.class;
    Class<? extends JsonDeserializer> keyUsing() default KeyDeserializer.None.class;
    Class<?> builder() default Void.class;
    Class<?> as() default Void.class;
    Class<?> keyAs() default Void.class;
    Class<?> contentAs() default Void.class;
    Class<? extends Converter> converter() default Converter.None.class;
    Class<? extends Converter> contentConverter() default Converter.None.class;
}

// Additional important annotations
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonPOJOBuilder {
    String buildMethodName() default "build";
    String withPrefix() default "with";
}

@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonNaming {
    Class<? extends PropertyNamingStrategy> value();
}

@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonAppend {
    JsonAppend.Attr[] attrs() default {};
    JsonAppend.Prop[] props() default {};
    boolean prepend() default false;
    
    public @interface Attr {
        String value();
        boolean required() default false;
    }
    
    public @interface Prop {
        Class<? extends VirtualBeanPropertyWriter> value();
        String name() default "";
        String namespace() default "";
        Class<?> type() default Object.class;
        int index() default -1;
        boolean required() default false;
    }
}

Annotations

Modules

Module system for extending ObjectMapper functionality with additional serializers, deserializers, and features.

public abstract class Module implements Versioned {
    // Module metadata
    public abstract String getModuleName();
    public abstract Version version();
    
    // Module setup
    public abstract void setupModule(SetupContext context);
    
    // Setup context interface
    public static interface SetupContext {
        // Configuration access
        MapperConfig<?> getConfig();
        DeserializationConfig getDeserializationConfig();
        SerializationConfig getSerializationConfig();
        
        // Registration methods
        void addDeserializers(Deserializers d);
        void addKeyDeserializers(KeyDeserializers d);
        void addSerializers(Serializers s);
        void addKeySerializers(Serializers s);
        void addBeanDeserializerModifier(BeanDeserializerModifier mod);
        void addBeanSerializerModifier(BeanSerializerModifier mod);
        void addAbstractTypeResolver(AbstractTypeResolver resolver);
        void addTypeModifier(TypeModifier modifier);
        void addValueInstantiators(ValueInstantiators instantiators);
        void setClassIntrospector(ClassIntrospector ci);
        void insertAnnotationIntrospector(AnnotationIntrospector ai);
        void appendAnnotationIntrospector(AnnotationIntrospector ai);
        void registerSubtypes(Class<?>... subtypes);
        void registerSubtypes(NamedType... subtypes);
        void registerSubtypes(Collection<Class<?>> subtypes);
        void setMixInAnnotations(Class<?> target, Class<?> mixinSource);
        void addDeserializationProblemHandler(DeserializationProblemHandler handler);
        void setNamingStrategy(PropertyNamingStrategy naming);
    }
}

Modules

Advanced Features

Advanced features including polymorphism, custom type handling, and object identity management.

// Polymorphic type handling
public abstract class TypeResolverBuilder<T extends TypeResolverBuilder<T>> {
    public abstract T inclusion(JsonTypeInfo.As includeAs);
    public abstract T typeProperty(String propName);
    public abstract T typeIdVisibility(boolean isVisible);
    public abstract T defaultImpl(Class<?> defaultImpl);
    public abstract TypeSerializer buildTypeSerializer(SerializationConfig config, JavaType baseType, Collection<NamedType> subtypes);
    public abstract TypeDeserializer buildTypeDeserializer(DeserializationConfig config, JavaType baseType, Collection<NamedType> subtypes);
}

// Injectable values for dependency injection
public abstract class InjectableValues {
    public abstract Object findInjectableValue(Object valueId, DeserializationContext ctxt, BeanProperty forProperty, Object beanInstance) throws JsonMappingException;
    
    public static class Std extends InjectableValues implements Serializable {
        public Std();
        public Std(Map<String, Object> values);
        public Std addValue(String key, Object value);
        public Std addValue(Class<?> key, Object value);
    }
}

// Object identity support
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonIdentityInfo {
    Class<? extends ObjectIdGenerator> generator();
    String property() default "@id";
    boolean resolver() default false;
    Class<? extends ObjectIdResolver> resolver() default ObjectIdResolver.class;
    Class<?> scope() default Object.class;
}

Advanced Features

Types

// Core exception types
public class JsonProcessingException extends IOException {
    public JsonProcessingException(String msg);
    public JsonProcessingException(String msg, Throwable rootCause);
    public JsonProcessingException(String msg, JsonLocation loc);
    public JsonProcessingException(String msg, JsonLocation loc, Throwable rootCause);
    public String getOriginalMessage();
    public Object getProcessor();
    public JsonLocation getLocation();
}

public class JsonMappingException extends DatabindException {
    public static class Reference implements Serializable {
        public Reference();
        public Reference(Object from);
        public Reference(Object from, String fieldName);
        public Reference(Object from, int index);
        public void setFrom(Object o);
        public void setFieldName(String fieldName);
        public void setIndex(int index);
        public Object getFrom();
        public String getFieldName();
        public int getIndex();
    }
    
    public List<Reference> getPath();
    public String getPathReference();
    public void prependPath(Object referrer, String fieldName);
    public void prependPath(Object referrer, int index);
    public void prependPath(Reference r);
    
    public static JsonMappingException from(JsonParser p, String msg);
    public static JsonMappingException from(JsonParser p, String msg, Throwable problem);
    public static JsonMappingException from(JsonGenerator g, String msg);
    public static JsonMappingException from(JsonGenerator g, String msg, Throwable problem);
    public static JsonMappingException from(DeserializationContext ctxt, String msg);
    public static JsonMappingException from(DeserializationContext ctxt, String msg, Throwable t);
    public static JsonMappingException from(SerializerProvider ctxt, String msg);
    public static JsonMappingException from(SerializerProvider ctxt, String msg, Throwable problem);
}

// Specific exception types
public class MismatchedInputException extends JsonMappingException {
    public MismatchedInputException(JsonParser p, String msg);
    public MismatchedInputException(JsonParser p, String msg, JsonLocation loc);
    public MismatchedInputException(JsonParser p, String msg, Class<?> targetType);
    public MismatchedInputException(JsonParser p, String msg, JavaType targetType);
    public Class<?> getTargetType();
}

public class InvalidDefinitionException extends JsonMappingException {
    public InvalidDefinitionException(JsonParser p, String msg, BeanDescription beanDesc);
    public InvalidDefinitionException(JsonParser p, String msg, JavaType type);
    public JavaType getType();
}

public class InvalidFormatException extends MismatchedInputException {
    public InvalidFormatException(JsonParser p, String msg, Object value, Class<?> targetType);
    public Object getValue();
}

public class UnrecognizedPropertyException extends PropertyBindingException {
    public UnrecognizedPropertyException(JsonParser p, String msg, JsonLocation loc, Class<?> referringClass, String propName, Collection<Object> propertyIds);
    public Collection<Object> getKnownPropertyIds();
}

public class IgnoredPropertyException extends PropertyBindingException {
    public IgnoredPropertyException(JsonParser p, String msg, JsonLocation loc, Class<?> referringClass, String propName, Collection<Object> propertyIds);
}

public abstract class PropertyBindingException extends JsonMappingException {
    public String getPropertyName();
    public Class<?> getReferringClass();
}

public class InvalidNullException extends MismatchedInputException {
    public InvalidNullException(DeserializationContext ctxt, String msg, JsonLocation loc);
}

public class ValueInstantiationException extends JsonMappingException {
    public ValueInstantiationException(JsonParser p, String msg, JavaType type);
    public ValueInstantiationException(JsonParser p, String msg, JavaType type, Throwable cause);
    public JavaType getType();
}

// Property naming
public class PropertyName implements Serializable {
    public static final PropertyName USE_DEFAULT;
    public static final PropertyName NO_NAME;
    
    public PropertyName(String simpleName);
    public PropertyName(String simpleName, String namespace);
    public static PropertyName construct(String simpleName);
    public static PropertyName construct(String simpleName, String ns);
    
    public String getSimpleName();
    public String getNamespace();
    public boolean hasSimpleName();
    public boolean hasNamespace();
    
    public PropertyName withSimpleName(String simpleName);
    public PropertyName withNamespace(String ns);
    public PropertyName internSimpleName();
}

// Configuration features interface
public interface ConfigFeature {
    boolean enabledByDefault();
    int getMask();
    boolean enabledIn(int flags);
}

// Access pattern enumeration
public enum AccessPattern {
    ALWAYS_NULL,
    CONSTANT,
    DYNAMIC,
    READ_ONLY,
    WRITE_ONLY;
}

docs

advanced-features.md

annotations.md

configuration.md

deserialization.md

index.md

json-tree-model.md

modules.md

object-mapping.md

serialization.md

type-system.md

tile.json