diff options
author | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-06-18 20:05:00 -0700 |
---|---|---|
committer | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-06-18 20:05:00 -0700 |
commit | 330d0b6a1565586ea49ed5cf28cf25e68dd1b172 (patch) | |
tree | a03c6aff83004cbe2c5177b8084a50bc6d80c06e /src/main/java | |
parent | 67764a75e3689111b91f40be7507ec3de9e130a5 (diff) | |
download | jackson-databind-330d0b6a1565586ea49ed5cf28cf25e68dd1b172.tar.gz |
Work on #2767 (fix for EnumMap first)
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java index 40986330d..cfc1133dc 100644 --- a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java +++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java @@ -242,6 +242,22 @@ public class EnumMapDeserializer return deserialize(p, ctxt, constructMap(ctxt)); case JsonTokenId.ID_STRING: return (EnumMap<?,?>) _valueInstantiator.createFromString(ctxt, p.getText()); + case JsonTokenId.ID_START_ARRAY: + { + JsonToken t = p.nextToken(); + if (t == JsonToken.END_ARRAY) { + if (ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT)) { + return null; + } + } else if (ctxt.isEnabled(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS)) { + final Object value = deserialize(p, ctxt); + if (p.nextToken() != JsonToken.END_ARRAY) { + handleMissingEndArrayForSingle(p, ctxt); + } + return (EnumMap<?,?>) value; + } + } + return (EnumMap<?,?>) ctxt.handleUnexpectedToken(getValueType(ctxt), JsonToken.START_ARRAY, p, null); default: } // slightly redundant (since String was passed above), but also handles empty array case: |