diff options
-rw-r--r-- | release-notes/VERSION-2.x | 3 | ||||
-rw-r--r-- | src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java | 20 | ||||
-rw-r--r-- | src/test/java/com/fasterxml/jackson/databind/struct/UnwrapSingleArrayMiscTest.java (renamed from src/test/java/com/fasterxml/jackson/failing/UnwrapSingleArrayMiscTest.java) | 2 |
3 files changed, 13 insertions, 12 deletions
diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x index c4226db65..b4ce13267 100644 --- a/release-notes/VERSION-2.x +++ b/release-notes/VERSION-2.x @@ -53,6 +53,9 @@ Project: jackson-databind #2760: Jackson doesn't respect `CAN_OVERRIDE_ACCESS_MODIFIERS=false` for deserializer properties (reported by Johannes K) +#2767: `DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS` don't support `Map` + type field + (reported by abomb4@github) #2770: JsonParser from MismatchedInputException cannot getText() for floating-point value (reported by João G) diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java index a474cbac3..cba73fb4a 100644 --- a/src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java +++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java @@ -355,10 +355,10 @@ public class MapDeserializer getValueInstantiator(), p, "no default constructor found"); } - // Ok: must point to START_OBJECT, FIELD_NAME or END_OBJECT - JsonToken t = p.currentToken(); - if ((t == JsonToken.START_OBJECT) || (t == JsonToken.FIELD_NAME) - || (t == JsonToken.END_OBJECT)) { + switch (p.currentTokenId()) { + case JsonTokenId.ID_START_OBJECT: + case JsonTokenId.ID_END_OBJECT: + case JsonTokenId.ID_FIELD_NAME: final Map<Object,Object> result = (Map<Object,Object>) _valueInstantiator.createUsingDefault(ctxt); if (_standardStringKey) { _readAndBindStringKeyMap(p, ctxt, result); @@ -366,15 +366,13 @@ public class MapDeserializer } _readAndBind(p, ctxt, result); return result; - } - - // (empty) String may be ok however; or single-String-arg ctor - if (t == JsonToken.VALUE_STRING) { + case JsonTokenId.ID_STRING: + // (empty) String may be ok however; or single-String-arg ctor return _deserializeFromString(p, ctxt); - } - // Empty array, or single-value wrapped in array? - if (t == JsonToken.START_ARRAY) { + case JsonTokenId.ID_START_ARRAY: + // Empty array, or single-value wrapped in array? return _deserializeFromArray(p, ctxt); + default: } return (Map<Object,Object>) ctxt.handleUnexpectedToken(getValueType(ctxt), p); } diff --git a/src/test/java/com/fasterxml/jackson/failing/UnwrapSingleArrayMiscTest.java b/src/test/java/com/fasterxml/jackson/databind/struct/UnwrapSingleArrayMiscTest.java index f00485e49..6167862f3 100644 --- a/src/test/java/com/fasterxml/jackson/failing/UnwrapSingleArrayMiscTest.java +++ b/src/test/java/com/fasterxml/jackson/databind/struct/UnwrapSingleArrayMiscTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.failing; +package com.fasterxml.jackson.databind.struct; import java.util.Collections; import java.util.EnumMap; |