I implement the ResolvableDeserializer within my custom deserializer, which
gives me the reference to the default JsonDeserializer<?>.
Id like to invoke the default deserializer on the "Jail" JsonNode to return
to me a Jail object
public class BadStudentDeserializer extends StdDeserializer<BadStudent>
implements ResolvableDeserializer{
private static final long serialVersionUID = 1L;
private JsonDeserializer<?> defaultDeserializer;
public BadStudentDeserializer(JsonDeserializer<?> defaultDeserializer) {
super(BadStudent.class);
this.defaultDeserializer = defaultDeserializer;
}
@Override
public BadStudent deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
JsonNode jsonTree = p.getCodec().readTree(p);
String id = jsonTree.get("id").asText();
String weapon = jsonTree.get("weapon").asText();
JsonNode jailNode = jsonTree.get("jail");
JsonParser jailNodeParser = jailNode.traverse();
//advance it as per documentation
jailNodeParser.nextToken();
//this doesnt work
Jail jail = (Jail)defaultDeserializer.
deserialize(jailNodeParser, ctxt);
return new BadStudent(id, weapon, jail);
}
@Override
public void resolve(DeserializationContext ctxt) throws
JsonMappingException {
((ResolvableDeserializer) defaultDeserializer).resolve(ctxt);
}
How do I provide the defaultDeserializer a clue as to what class TYPE a
tree node is, so that it can pick up the right deserializer or that
treeNode?
Hope I am able to explain myself clearly.
--
You received this message because you are subscribed to the Google Groups
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.