繁体   English   中英

Jackson 使用@JsonPOJOBuilder 自定义反序列化

[英]Jackson custom deserialize with @JsonPOJOBuilder

我有这样的情况:

@Getter  //lombook
@Bulider //lombook
@JsonDeserialize(builder = Person.PersonBuilder.class)
public class Person {
    //...

    @JsonDeserialize(using = RawJsonDeserializer.class)
    private String someString;

    @JsonPOJOBuilder
    public static class PersonBuilder{
        //...
    }
}

我的自定义反序列化器:

/**
 * Deserializes from JSON object to string.
 */
public class RawJsonDeserializer extends JsonDeserializer<String> {
    @Override
    public String deserialize(JsonParser parser, DeserializationContext context) throws IOException,
                                                                                        JsonParseException {
        ObjectMapper mapper = (ObjectMapper) parser.getCodec();

        return mapper.writeValueAsString(mapper.readTree(parser));
    }
}

问题是忽略 RawJsonDeserializer 反序列化器。 当我尝试从 JSON 获取 Person object 时如何调用它? 例如:从 JSON ->

{
  "someString": {
    "key": "value"
  }
}

到人 object 字段someString是字符串 - >

Assert.assertEquals("{\"key\": \"value\"},person.getSomeString());" \\ true

我不熟悉 Json 序列化,但看起来像序列化它是将 dto 转换为文本表示。 但是在您的示例中,您使用 JsonDeserializer 出了什么问题。 可能是我误解了什么。 您还收集 json object 表单文本并再次将其转换为文本,这让我很困惑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM