代码之家  ›  专栏  ›  技术社区  ›  SDekov

Jackson自定义反序列化委托返回默认委托

  •  1
  • SDekov  · 技术社区  · 7 年前

    @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、 我确实需要自定义反序列化程序,不能使用类型批注。

    1 回复  |  直到 7 年前
        1
  •  1
  •   S.K.    7 年前

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

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