-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 2.11
Version 2.11 is being developed, as of January 2020.
Under development
No changes to minimum JDK baselines for use since 2.10
JDK 8 is required to build all components, however, as module info inclusion plug-in requires it (note: publishing to Maven Central also requires JDK 8), but runtime environment of JDK/JVM jacis needed with exception of:
-
jackson-annotations
,jackson-core
,jackson-jr
only require JDK/JVM 6 - Kotlin, Scala and Java 8 modules require JDK/JVM 8 or higher
- Default serialization ordering now considers
@JsonProperty(index = )
(seedatabind#2555
below) -
Avro
format backend now identifies as capable of embedding binary data: will change schema type indicated forbyte[]
,java.util.UUID
(seedataformats-binary/avro#179
below) - Timezone offset in default
java.util.Date
,java.util.Calendar
serialization will now include colon (like+00:00
) by default (seedatabind#2643
below)
- New datatype module --
jackson-datatype-joda-money
for Joda Money datatypes- Added as part of multi-project Jackson Misc Datatypes (https://github.com/FasterXML/jackson-datatypes-misc) repo
- Contributed by Iurii Ignatko
-
jackson-jr
now has one more component,jr-annotation-support
(see issuejackson-jr#32
below)
Need to properly serialize/deserialize UUID
s in Avro was determined late, but will also affect Protobuf.
Beyond more compact binary representation, generating usable schema, it would be nice to also allow Shape
overrides in case textual representation is needed.
New MapperFeature
, BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES
added (see #2587): if enabled, will impose limits on allowed base types for:
- Legacy Default Typing enabling methods (
ObjectMapper.enableDefaultTyping()
), which, while deprecated may still be in use - Polymorphic deserialization using
@JsonTypeInfo
with class name as is, without explicitly configuredPolymorphicTypeValidator
This is basically a one-line addition that can force safe defaults, similar to ones that Jackson 3.0 will have by default: overridable as needed, but strict(er) by default.
With new jr-annotation-support
component (JacksonAnnotationExtension
), it is now possible use some of core Jackson annotations for changing basic property inclusion/ignoral and naming rules.
See jackson-jr#32
below for details.
Databind:
-
@JsonAlias
works for Enums (2352) -
@JsonSerialize(keyUsing)
and@JsonDeserialize(keyUsing)
work on (Map) key class (#2503)
- #504: Add a String Array write method in the Streaming API
-
#565: Synchronize variants of
JsonGenerator#writeNumberField
withJsonGenerator#writeNumber
- #587: Add JsonGenerator#writeNumber(char[], int, int) method
-
#606: Do not clear aggregated contents of
TextBuffer
whenreleaseBuffers()
called -
#609:
FilteringGeneratorDelegate
does not handlewriteString(Reader, int)
- #611: Optionally allow leading decimal in float tokens
- #953: i-I case conversion problem in Turkish locale with case-insensitive deserialization
-
#962:
@JsonInject
fails on trying to find deserializer even if inject-only -
#1983: Polymorphic deserialization should handle case-insensitive Type Id property name if
MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES
is enabled -
#2049:
TreeTraversingParser
andUTF8StreamJsonParser
create contexts differently -
#2352: Support use of
@JsonAlias
for enum values -
#2365:
declaringClass
of "enum-as-POJO" not removed forObjectMapper
with a naming strategy -
#2480: Fix
JavaType.isEnumType()
to support sub-classes -
#2487:
BeanDeserializerBuilder
Protected Factory Method for Extension -
#2503: Support
@JsonSerialize(keyUsing)
and@JsonDeserialize(keyUsing)
on Key class -
#2511: Add
SerializationFeature.WRITE_SELF_REFERENCES_AS_NULL
-
#2515:
ObjectMapper.registerSubtypes(NamedType...)
doesn't allow to register the same POJO for two different type ids -
#2522:
DeserializationContext.handleMissingInstantiator()
throwsMismatchedInputException
for non-static inner classes -
#2525: Incorrect
JsonStreamContext
forTokenBuffer
andTreeTraversingParser
-
#2527: Add
AnnotationIntrospector.findRenameByField()
to support Kotlin's "is-getter" naming convention -
#2555: Use
@JsonProperty(index)
for sorting properties on serialization -
#2565: Java 8
Optional
not working with@JsonUnwrapped
on unwrappable type -
#2587: Add
MapperFeature.BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES
to allow blocking use of unsafe base type for polymorphic deserialization -
#2589:
DOMDeserializer
: setExpandEntityReferences(false) may not prevent external entity expansion in all cases -
#2592:
ObjectMapper.setSerializationInclusion()
is ignored forJsonAnyGetter
-
#2608:
ValueInstantiationException
when deserializing using a builder andUNWRAP_SINGLE_VALUE_ARRAYS
- #2636: ObjectReader readValue lacks Class argument
-
#2643: Change default textual serialization of
java.util.Date
/Calendar
to include colon in timezone offset -
#2647: Add
ObjectMapper.createParser()
andcreateGenerator()
methods -
#2657: Allow serialization of
Properties
with non-String values -
#2663: Add new factory method for creating custom
EnumValues
to pass to `EnumDeserializer
-
#179: Add
AvroGenerator.canWriteBinaryNatively()
to support binary writes, fixjava.util.UUID
representation
-
#7: Add
CsvParser.Feature.EMPTY_STRING_AS_NULL
to allow coercing empty Strings intonull
values -
#115: JsonProperty index is not honored by CsvSchema builder
(actually fixed by
databind#2555
)
-
#192: Allow
IonObjectMapper
with class name annotation introspector to deserialize generic subtypes
-
#180: YAMLGenerator serializes string with special chars unquoted when using
MINIMIZE_QUOTES
mode
-
#138: Prevent deserialization of "" as
null
forDuration
,Instant
,LocalTime
,OffsetTime
andYearMonth
in "strict" (non-lenient) mode
-
#13: Support for
JsonPatch
andJsonMergePatch
defined in JSON-P 1.1
-
#284: Use
AnnotationIntrospector.findRenameByField()
to support "is properties"
- #87: Support for default parameter values