Added new UNWRAP_SINGLE_VALUE_ARRAYS DeserializationFeature #384
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes issue # 381
By default the new feature is disabled but if enabled (i.e. "objectMapper.enable(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS);"), any data bind to single element values (i.e. not a list or array) will allow the JSON to contain a single element array and will automatically unwrap that array value. See issue for more detailed information.
For example, let's say you had a class:
public class FooBean { public String bar; }
Without the feature enabled the deserializing following JSON into a FooBean would throw a JsonMappingException:
{ "bar" : [ "barValue" ] }
with the feature enabled, JSON processing would be successful and the FooBean would have the "bar" field set to "barValue".
However:
{ "bar" : [ "barValue", "barValue2" ] } (i.e. if the array contains more than a single element)
would still throw a JsonMappingException
All deserializers supported by jackson-databind have been updated to support the new feature.
Custom JsonDeserializer(s) developed externally to jackson-databind will need to be updated to read this feature's configured value to mimic identical behavior. However since the StdDeserializer and FromStringDeserializer have been updated, any custom deserializers that extend from those classes may function with the new feature without any modification.