杰克逊自定义解串器委托返回默认值

时间:2018-08-20 09:00:19

标签: java json serialization jackson

在自定义的Jackson解串器中,是否可以将某些属性委派回默认的解串器?

@Override
public final T deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
    ObjectNode node = jp.getCodec().readTree(jp);

    T type = createType();
    //custom deserialise some fields here
    ...

    // Is there a way to delegate everything else back to Jackson?

    ObjectNode nodeToDelegate = node.get("someField");
    // delegate back to jackson and deserialise into `type`
    // nodeToDelegate can be anything - Number / Object / Array / etc.
}

p.s。我确实需要自定义反序列化器,并且不能使用类型注释。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码来实现这一目标。

JsonParser parser = nodeToDelegate.traverse();
parser.setCodec(jp.getCodec());
parser.readValueAs(<Type>.class);