General data-binding functionality for Jackson: works on core streaming API
npx @tessl/cli install tessl/maven-com-fasterxml-jackson-core--jackson-databind@2.20.0Jackson 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.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.20.0</version>
</dependency>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;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();Jackson Databind is built around several key components:
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);
}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();
}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);
}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;
}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;
}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);
}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;
}
}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);
}
}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;
}// 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;
}