aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--release-notes/VERSION-2.x3
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java20
-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;