@@ -92,14 +92,15 @@ final static class ObjectDeserializer
92
92
public static ObjectDeserializer getInstance () { return _instance ; }
93
93
94
94
@ Override
95
- public ObjectNode deserialize (JsonParser jp , DeserializationContext ctxt ) throws IOException
95
+ public ObjectNode deserialize (JsonParser p , DeserializationContext ctxt ) throws IOException
96
96
{
97
- if (jp .getCurrentToken () == JsonToken .START_OBJECT ) {
98
- jp .nextToken ();
99
- return deserializeObject (jp , ctxt , ctxt .getNodeFactory ());
97
+ if (p .isExpectedStartObjectToken () || p .hasToken (JsonToken .FIELD_NAME )) {
98
+ return deserializeObject (p , ctxt , ctxt .getNodeFactory ());
100
99
}
101
- if (jp .getCurrentToken () == JsonToken .FIELD_NAME ) {
102
- return deserializeObject (jp , ctxt , ctxt .getNodeFactory ());
100
+ // 23-Sep-2015, tatu: Ugh. We may also be given END_OBJECT (similar to FIELD_NAME),
101
+ // if caller has advanced to the first token of Object, but for empty Object
102
+ if (p .hasToken (JsonToken .END_OBJECT )) {
103
+ return ctxt .getNodeFactory ().objectNode ();
103
104
}
104
105
throw ctxt .mappingException (ObjectNode .class );
105
106
}
@@ -117,11 +118,10 @@ final static class ArrayDeserializer
117
118
public static ArrayDeserializer getInstance () { return _instance ; }
118
119
119
120
@ Override
120
- public ArrayNode deserialize (JsonParser jp , DeserializationContext ctxt )
121
- throws IOException , JsonProcessingException
121
+ public ArrayNode deserialize (JsonParser p , DeserializationContext ctxt ) throws IOException
122
122
{
123
- if (jp .isExpectedStartArrayToken ()) {
124
- return deserializeArray (jp , ctxt , ctxt .getNodeFactory ());
123
+ if (p .isExpectedStartArrayToken ()) {
124
+ return deserializeArray (p , ctxt , ctxt .getNodeFactory ());
125
125
}
126
126
throw ctxt .mappingException (ArrayNode .class );
127
127
}
0 commit comments