, , bean (BeanDeserializerBase.java 476 2.6.3). , . , , .
, Jackson Nested , , Nested.
, :
@JsonDeserialize(contentUsing = NestedDeserializer.class)
public List<Nested> nestedList;
, :
:
public static final class NestedDeserializer extends StdDeserializer<MyClass.Nested>
implements ResolvableDeserializer {
private JsonDeserializer<Object> underlyingDeserializer;
public NestedDeserializer() {
super(MyClass.Nested.class);
}
@Override
public void resolve(DeserializationContext ctxt) throws JsonMappingException {
underlyingDeserializer = ctxt
.findRootValueDeserializer(ctxt.getTypeFactory().constructType(MyClass.Nested.class));
}
@Override
public Nested deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
JsonStreamContext ourContext = p.getParsingContext();
JsonStreamContext listContext = ourContext.getParent();
JsonStreamContext containerContext = listContext.getParent();
MyClass container = (MyClass) containerContext.getCurrentValue();
MyClass.Nested value = container.new Nested();
underlyingDeserializer.deserialize(p, ctxt, value);
return value;
}
}