boolean useObjectId = valueDes.getObjectIdReader() != null; if (useObjectId) { referringAccumulator = new MapReferringAccumulator(_containerType.getContentType().getRawClass(), result); if (p.isExpectedStartObjectToken()) { keyStr = p.nextFieldName(); } else { JsonToken t = p.getCurrentToken(); if (t != JsonToken.FIELD_NAME) { if (t == JsonToken.END_OBJECT) { return; ctxt.reportWrongTokenException(this, JsonToken.FIELD_NAME, null); keyStr = p.getCurrentName(); for (; keyStr != null; keyStr = p.nextFieldName()) { Object key = keyDes.deserializeKey(keyStr, ctxt); JsonToken t = p.nextToken(); value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser);
for (; p.getCurrentToken() == JsonToken.FIELD_NAME; p.nextToken()) { String fieldName = p.getCurrentName(); Object key = (keyDes == null) ? fieldName : keyDes.deserializeKey(fieldName, ctxt); JsonToken t = p.nextToken(); value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser);
if (jp.getCurrentToken() != JsonToken.START_OBJECT) { return _deserializeFromEmpty(jp, ctxt); final TypeDeserializer typeDeser = _valueTypeDeserializer; while ((jp.nextToken()) == JsonToken.FIELD_NAME) { String keyName = jp.getCurrentName(); // just for error message Enum<?> key = (Enum<?>) _keyDeserializer.deserializeKey(keyName, ctxt); if (key == null) { if (!ctxt.isEnabled(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL)) { throw ctxt.weirdStringException(keyName, _enumClass, "value not one of declared Enum instance names for " +_mapType.getKeyType()); value = valueDes.getNullValue(); } else if (typeDeser == null) { value = valueDes.deserialize(jp, ctxt); } else { value = valueDes.deserializeWithType(jp, ctxt, typeDeser);
JsonToken t = p.getCurrentToken(); if (t != JsonToken.START_OBJECT && t != JsonToken.FIELD_NAME && t != JsonToken.END_OBJECT) { t = p.nextToken(); return ctxt.reportInputMismatch(this, "Cannot deserialize a Map.Entry out of empty JSON Object"); return (Map.Entry<Object,Object>) ctxt.handleUnexpectedToken(handledType(), p); final TypeDeserializer typeDeser = _valueTypeDeserializer; final String keyStr = p.getCurrentName(); Object key = keyDes.deserializeKey(keyStr, ctxt); Object value = null; value = valueDes.getNullValue(ctxt); } else if (typeDeser == null) { value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser); if (t != JsonToken.END_OBJECT) { if (t == JsonToken.FIELD_NAME) { // most likely ctxt.reportInputMismatch(this, "Problem binding JSON into Map.Entry: more than one entry in JSON (second field: '%s')", p.getCurrentName());
if (p.isExpectedStartObjectToken()) { key = p.nextFieldName(); } else if (p.hasToken(JsonToken.FIELD_NAME)) { key = p.getCurrentName(); } else { result = (Map<Object,Object>)creator.build(ctxt, buffer); } catch (Exception e) { return wrapAndThrow(e, _containerType.getRawClass(), key); Object actualKey = _keyDeserializer.deserializeKey(key, ctxt); Object value; value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser); wrapAndThrow(e, _containerType.getRawClass(), key); return null; return (Map<Object,Object>)creator.build(ctxt, buffer); } catch (Exception e) { wrapAndThrow(e, _containerType.getRawClass(), key); return null;
p.setCurrentValue(result); if (p.isExpectedStartObjectToken()) { keyStr = p.nextFieldName(); } else { JsonToken t = p.getCurrentToken(); return result; ctxt.reportWrongTokenException(this, JsonToken.FIELD_NAME, null); keyStr = p.getCurrentName(); for (; keyStr != null; keyStr = p.nextFieldName()) { Enum<?> key = (Enum<?>) _keyDeserializer.deserializeKey(keyStr, ctxt); JsonToken t = p.nextToken(); if (key == null) { if (!ctxt.isEnabled(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL)) { return (EnumMap<?,?>) ctxt.handleWeirdStringValue(_enumClass, keyStr, "value not one of declared Enum instance names for %s", _containerType.getKeyType()); value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser);
if (p.isExpectedStartObjectToken()) { keyStr = p.nextFieldName(); } else { JsonToken t = p.getCurrentToken(); if (t == JsonToken.END_OBJECT) { return; ctxt.reportWrongTokenException(this, JsonToken.FIELD_NAME, null); keyStr = p.getCurrentName(); for (; keyStr != null; keyStr = p.nextFieldName()) { Object key = keyDes.deserializeKey(keyStr, ctxt); JsonToken t = p.nextToken(); Object value; if (old != null) { value = valueDes.deserialize(p, ctxt, old); } else if (typeDeser == null) { value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser);
JsonToken t = jp.getCurrentToken(); if (t != JsonToken.START_OBJECT && t != JsonToken.FIELD_NAME && t != JsonToken.END_OBJECT) { t = jp.nextToken(); throw ctxt.mappingException("Can not deserialize a Map.Entry out of empty JSON Object"); throw ctxt.mappingException(handledType(), t); final TypeDeserializer typeDeser = _valueTypeDeserializer; final String keyStr = jp.getCurrentName(); Object key = keyDes.deserializeKey(keyStr, ctxt); Object value = null; value = valueDes.getNullValue(); } else if (typeDeser == null) { value = valueDes.deserialize(jp, ctxt); } else { value = valueDes.deserializeWithType(jp, ctxt, typeDeser); if (t != JsonToken.END_OBJECT) { if (t == JsonToken.FIELD_NAME) { // most likely throw ctxt.mappingException("Problem binding JSON into Map.Entry: more than one entry in JSON (second field: '"+jp.getCurrentName()+"')");
if (p.isExpectedStartObjectToken()) { keyName = p.nextFieldName(); } else if (p.hasToken(JsonToken.FIELD_NAME)) { keyName = p.getCurrentName(); } else { result = (EnumMap<?,?>)creator.build(ctxt, buffer); } catch (Exception e) { return wrapAndThrow(e, _containerType.getRawClass(), keyName); Enum<?> key = (Enum<?>) _keyDeserializer.deserializeKey(keyName, ctxt); if (key == null) { if (!ctxt.isEnabled(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL)) { return (EnumMap<?,?>) ctxt.handleWeirdStringValue(_enumClass, keyName, "value not one of declared Enum instance names for %s", _containerType.getKeyType()); value = _valueDeserializer.deserialize(p, ctxt); } else { value = _valueDeserializer.deserializeWithType(p, ctxt, _valueTypeDeserializer); wrapAndThrow(e, _containerType.getRawClass(), keyName); return null;
@Override public Map<?, ?> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { final java.util.List<Tuple2<Object, Object>> result = new java.util.ArrayList<>(); while (p.nextToken() != JsonToken.END_OBJECT) { String name = p.getCurrentName(); Object key = keyDeserializer.deserializeKey(name, ctxt); p.nextToken(); result.add(Tuple.of(key, valueDeserializer.deserialize(p, ctxt))); } if (SortedMap.class.isAssignableFrom(handledType())) { return TreeMap.ofEntries(keyComparator, result); } if (LinkedHashMap.class.isAssignableFrom(handledType())) { return LinkedHashMap.ofEntries(result); } // default deserialization [...] -> Map return HashMap.ofEntries(result); } }
while (p.nextToken() != JsonToken.END_OBJECT) { final Object key; if (keyDeserializer != null) { key = keyDeserializer.deserializeKey(p.getCurrentName(), ctxt); } else { key = p.getCurrentName();
protected Object mapObject(JsonParser p, DeserializationContext ctxt) throws IOException { Object key1; JsonToken t = p.currentToken(); key1 = p.nextFieldName(); } else if (t == JsonToken.FIELD_NAME) { key1 = p.currentName(); } else { if (t != JsonToken.END_OBJECT) { return ctxt.handleUnexpectedToken(handledType(), p); JavaType keyType = idResolver.typeFromId(ctxt, p.getTypeId().toString()); if (keyType != null) { deserializer = ctxt.findKeyDeserializer(keyType, null); key1 = deserializer.deserializeKey(key1.toString(), ctxt); p.nextToken(); key2 = deserializer.deserializeKey(key2.toString(), ctxt); key = deserializer.deserializeKey(key.toString(), ctxt); p.nextToken();
/** * Method called to deserialize appropriate value, given parser (and * context), and set it using appropriate method (a setter method). */ public final void deserializeAndSet(JsonParser p, DeserializationContext ctxt, Object instance, String propName) throws IOException { try { Object key = (_keyDeserializer == null) ? propName : _keyDeserializer.deserializeKey(propName, ctxt); set(instance, key, deserialize(p, ctxt)); } catch (UnresolvedForwardReference reference) { if (!(_valueDeserializer.getObjectIdReader() != null)) { throw JsonMappingException.from(p, "Unresolved forward reference but no identity info.", reference); } AnySetterReferring referring = new AnySetterReferring(this, reference, _type.getRawClass(), instance, propName); reference.getRoid().appendReferring(referring); } }
while (p.nextToken() != JsonToken.END_OBJECT) { final Object key; if (keyDeserializer != null) { key = keyDeserializer.deserializeKey(p.getCurrentName(), ctxt); } else { key = p.getCurrentName(); value = elementDeserializer.deserializeWithType(p, ctxt, elementTypeDeserializer); } else { value = elementDeserializer.deserialize(p, ctxt);
if (p.getCurrentToken() != JsonToken.START_OBJECT) { return _deserializeFromEmpty(p, ctxt); final TypeDeserializer typeDeser = _valueTypeDeserializer; while ((p.nextToken()) == JsonToken.FIELD_NAME) { String keyName = p.getCurrentName(); // just for error message Enum<?> key = (Enum<?>) _keyDeserializer.deserializeKey(keyName, ctxt); if (key == null) { if (!ctxt.isEnabled(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL)) { return (EnumMap<?,?>) ctxt.handleWeirdStringValue(_enumClass, keyName, "value not one of declared Enum instance names for %s", _mapType.getKeyType()); value = valueDes.getNullValue(ctxt); } else if (typeDeser == null) { value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser);
JsonToken t = p.getCurrentToken(); if (t != JsonToken.START_OBJECT && t != JsonToken.FIELD_NAME && t != JsonToken.END_OBJECT) { t = p.nextToken(); ctxt.reportMappingException("Can not deserialize a Map.Entry out of empty JSON Object"); return null; return (Map.Entry<Object,Object>) ctxt.handleUnexpectedToken(handledType(), p); final TypeDeserializer typeDeser = _valueTypeDeserializer; final String keyStr = p.getCurrentName(); Object key = keyDes.deserializeKey(keyStr, ctxt); Object value = null; value = valueDes.getNullValue(ctxt); } else if (typeDeser == null) { value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser); if (t != JsonToken.END_OBJECT) { if (t == JsonToken.FIELD_NAME) { // most likely ctxt.reportMappingException("Problem binding JSON into Map.Entry: more than one entry in JSON (second field: '"+p.getCurrentName()+"')"); } else {
if (p.isExpectedStartObjectToken()) { key = p.nextFieldName(); } else if (p.hasToken(JsonToken.FIELD_NAME)) { key = p.getCurrentName(); } else { result = (Map<Object,Object>)creator.build(ctxt, buffer); } catch (Exception e) { wrapAndThrow(e, _mapType.getRawClass(), key); return null; Object actualKey = _keyDeserializer.deserializeKey(key, ctxt); Object value; value = valueDes.getNullValue(ctxt); } else if (typeDeser == null) { value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser); wrapAndThrow(e, _mapType.getRawClass(), key); return null; return (Map<Object,Object>)creator.build(ctxt, buffer); } catch (Exception e) { wrapAndThrow(e, _mapType.getRawClass(), key); return null;
p.setCurrentValue(result); if (p.isExpectedStartObjectToken()) { keyStr = p.nextFieldName(); } else { JsonToken t = p.getCurrentToken(); return result; ctxt.reportWrongTokenException(this, JsonToken.FIELD_NAME, null); keyStr = p.getCurrentName(); for (; keyStr != null; keyStr = p.nextFieldName()) { Enum<?> key = (Enum<?>) _keyDeserializer.deserializeKey(keyStr, ctxt); JsonToken t = p.nextToken(); if (key == null) { if (!ctxt.isEnabled(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL)) { return (EnumMap<?,?>) ctxt.handleWeirdStringValue(_enumClass, keyStr, "value not one of declared Enum instance names for %s", _containerType.getKeyType()); value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser);
if (p.isExpectedStartObjectToken()) { keyStr = p.nextFieldName(); } else { JsonToken t = p.getCurrentToken(); if (t == JsonToken.END_OBJECT) { return; ctxt.reportWrongTokenException(this, JsonToken.FIELD_NAME, null); keyStr = p.getCurrentName(); for (; keyStr != null; keyStr = p.nextFieldName()) { Object key = keyDes.deserializeKey(keyStr, ctxt); JsonToken t = p.nextToken(); Object value; if (old != null) { value = valueDes.deserialize(p, ctxt, old); } else if (typeDeser == null) { value = valueDes.deserialize(p, ctxt); } else { value = valueDes.deserializeWithType(p, ctxt, typeDeser);
JsonToken t = jp.getCurrentToken(); if (t != JsonToken.START_OBJECT && t != JsonToken.FIELD_NAME && t != JsonToken.END_OBJECT) { t = jp.nextToken(); throw ctxt.mappingException("Can not deserialize a Map.Entry out of empty JSON Object"); throw ctxt.mappingException(handledType(), t); final TypeDeserializer typeDeser = _valueTypeDeserializer; final String keyStr = jp.getCurrentName(); Object key = keyDes.deserializeKey(keyStr, ctxt); Object value = null; value = valueDes.getNullValue(); } else if (typeDeser == null) { value = valueDes.deserialize(jp, ctxt); } else { value = valueDes.deserializeWithType(jp, ctxt, typeDeser); if (t != JsonToken.END_OBJECT) { if (t == JsonToken.FIELD_NAME) { // most likely throw ctxt.mappingException("Problem binding JSON into Map.Entry: more than one entry in JSON (second field: '"+jp.getCurrentName()+"')");