-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 2.9
Tatu Saloranta edited this page Mar 31, 2017
·
175 revisions
Version 2.9 development is on-going, as of March 2017: second pre-release (2.9.0.pr2) was released on March 21, 2017, and the goal is to release final 2.9.0 in April.
As per databind#219 java.sql.Date will finally use same "timestamp-or-String" determination as java.util.Date and java.util.Calendar.
This means that with vanilla, unchanged settings, values will be serialized as numeric timestamps.
Note that the default String serialization will still default to java.sql.Date.String(), and not to default formatting java.util.Date uses.
- Add separate exception type for "pojo configuration problem" (
InvalidDefinitionException), distinct from "json input" problem; in general to distinguish between bad configuration (server-side issue) and bad data (client issue) #1356 - Per-property custom serialization inclusion (
@JsonInclude(value=Include.CUSTOM, valueFilter=MyExcluder.class) #888 - Per-property overwrite-vs-merge annotation/handling, to allow for merging of configuration information (for example) #1399
- note: on-going work to increase coverage; some types (arrays, tree nodes) not yet supported
- Ability to override handling of
nullfor deserialization #1402 - Aliases, to allow migration: alternate property id names to accept (but not write) #1029
-
#1583
DeserializationFeatureto automatically verify that value bound is full value and there is no trailing junk in input ("whole value verification")
- Ability to force "inject-only" variant of
@JacksonInject#1381 -- also solves a few related issues wrt un-deserializable injectable values (which are common) - Non-blocking JSON/Smile parser?
- Allow pre-defining Object Ids; pluggable Object Id converters? #693
- A way to force a supertype as type id to use during serialization: this is needed to avoid deserialization problems for things like concrete Hibernate collection type. #789
- Low-level
Stringpost-processor? jackson-core#355
And possibly
- Protobuf: Schema building by hand
- Comma-separated "ints in a String" #1242
- Support for
@JsonIncludeProperties(opposite of@JsonIgnoreProperties) #1296 - "Safe"
ObjectReader,ObjectWriter; that is, ones that does NOT throw checked exceptions (wrapIOExceptions), to work better with Java 8 Streams #779
Some things that we are aware of but that very likely get postponed:
-
@JsonUnwrappedimprovements, which need major rewrite of unwrapped deserialization:- Support for
@JsonUnwrappedas@JsonCreatorparameter - Catching "unknown" properties
- Support for
- Rewrite of property/creator introspection code, to resolve most open issues wrt Creator auto-detection and name-detection
-
#103: Add
JsonInclude.Include.CUSTOM, properties for specifying filter(s) to use -
#104: Add new properties in
@JsonSetter:nulls/contentNulls -
#105: Add
@JsonFormat.lenientto allow configuring lenience of date/time deserializers -
#108: Allow
@JsonValueon fields -
#109: Add
enabledfor@JsonAnyGetter,@JsonAnySetter, to allow disabling via mix-ins -
#113: Add
@JsonMergeto support (deep) merging of properties -
#116: Add
@JsonAliasannotation to allow specifying alternate names for a property - Allow use of
@JsonViewon classes, to specify Default View to use on non-annotated properties.
- #17: Add 'JsonGenerator.writeString(Reader r, int charLength)'
-
#312: Add
JsonProcessingException.clearLocation()to allow clearing possibly security-sensitive information -
#314: Add a method in
JsonParser.isNan()to allow checking for "NaN" values -
#323: Add
JsonParser.ALLOW_TRAILING_COMMAto work for Arrays and Objects -
#325:
DataInputbacked parser should handleEOFExceptionat end of doc -
#340: Make
WriterBasedJsonGeneratornon-final -
#356: Improve indication of "source reference" in
JsonLocationwrtbyte[],char[]
-
#219:
SqlDateSerializerdoes not obeySerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS -
#476: Allow "Serialize as POJO" using
@JsonFormat(shape=Shape.OBJECT)class annotation -
#507: Support for default
@JsonViewfor a class -
#888: Allow specifying custom exclusion comparator via
@JsonInclude, usingJsonInclude.Include.CUSTOM - #1029: Add a way to define property name aliases
-
#1035:
@JsonAnySetterassumes key ofString, does not consider declared type -
#1284: Make
StdKeySerializersuse newJsonGenerator.writeFieldId()forint/longkeys -
#1320: Add
ObjectNode.put(String, BigInteger) -
#1341:
DeserializationFeature.FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY -
#1347: Extend
ObjectMapper.configOverrides()to allow changing visibility rules - #1356: Differentiate between input and code exceptions on deserialization
-
#1369: Improve
@JsonCreatordetection viaAnnotationIntrospectorby passingMappingConfig -
#1371: Add
MapperFeature.INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIESto allow disabling use of@CreatorPropertiesas explicit@JsonCreatorequivalent - #1376: Add ability to disable JsonAnySetter/JsonAnyGetter via mixin
-
#1399: Add support for
@JsonSetter(merge=OptBoolean.TRUE) to allow "deep update" -
#1402: Use
@JsonSetter(nulls=...)to specify handling ofnullvalues during deserialization -
#1406:
ObjectMapper.readTree()methods do not returnnullon end-of-input -
#1407:
@JsonFormat.patternis ignored forjava.sql.Datevalued properties -
#1428: Allow
@JsonValueon a field, not just getter -
#1454: Support
@JsonFormat.lenientforjava.util.Date,java.util.Calendar -
#1480: Add support for serializing
boolean/Booleanas number (0 or 1) - #1520: Case insensitive enum deserialization feature.
- #1552: Map key converted to byte array is not serialized as base64 string
-
#1554: Support deserialization of
Shape.OBJECT("as POJO") forMaps (and map-like types) -
#1556: Add
ObjectMapper.updateValue()method to update instance with given overrides
- #13: Add support for Avro default values
-
#14: Add support for Avro annotations via
AvroAnnotationIntrospector - #15: Add a way to produce "file" style Avro output
-
#57: Add support for
@Stringableannotation -
#59: Add support for
@AvroAliasannotation for Record/Enum name evolution -
#60: Add support for
@Unionand polymorphic types - #69: Add support for @AvroEncode annotation
- Upgrade
avro-coredep from 1.7.7 to 1.8.1
-
#127: Add
CsvGenerator.Feature.ALWAYS_QUOTE_EMPTY_STRINGSto allow forced quoting of empty Strings - #130: Add fluent addColumns operation to CsvSchema.Builder
-
#137: Inject "missing" trailing columns as
nulls (JsonParser.Feature.INSERT_NULLS_FOR_MISSING_COLUMNS) -
#139: Add
CsvParser.Feature.ALLOW_TRAILING_COMMAto allow enforcing strict handling -
#140: Fail for missing column values (
JsonParser.Feature.FAIL_ON_MISSING_COLUMNS) -
#142: Add methods for appending columns of a
CsvSchemainto another - Add new exception type
CsvMappingExceptionto indicate CSV-mapping issues (and give access to effective Schema)
- #1: Add convenience method(s) for reading System properties
-
#3: Write into
Propertiesinstance (factory, mapper) usingJavaPropsMapper.writeValue()withPropertiesandJavaPropsMapper.writeValueAsProperties() -
#4: Allow binding from
Propertiesinstance
-
#67: Add
YAMLGenerator.Feature.INDENT_ARRAYS -
#76: Add
YAMLGenerator.Feature.LITERAL_BLOCK_STYLEfor String output
-
#13:
configureAbsentsAsNullsnot working for primitive optionals likeOptionalInt - #15: Optional and OptionalLong deserialization are not consistent when deserializing from String
-
#17: Cached
Optionalserializer does not apply annotations for POJO properties -
#18:
InstantDeserializeris not working with offset of zero+00:00and+00
-
#119:
dependenciesproperty should not be an Array but Object