简体   繁体   English

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

[英]Jackson custom deserialize with @JsonPOJOBuilder

I have such case:我有这样的情况:

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

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

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

My custom deserializer:我的自定义反序列化器:

/**
 * 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));
    }
}

Problem is ignoring RawJsonDeserializer deserializer.问题是忽略 RawJsonDeserializer 反序列化器。 How to invoke it when i try get Person object from JSON?当我尝试从 JSON 获取 Person object 时如何调用它? For example: From JSON ->例如:从 JSON ->

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

To Person object where field someString is string ->到人 object 字段someString是字符串 - >

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

I am not familiar with Json serialization but looks like serialization it is conversion of dto into text representation.我不熟悉 Json 序列化,但看起来像序列化它是将 dto 转换为文本表示。 But in your example you use JsonDeserializer what is wrong.但是在您的示例中,您使用 JsonDeserializer 出了什么问题。 May be I am something misunderstood.可能是我误解了什么。 Also you collect json object form text and again convert it into text what is confused me您还收集 json object 表单文本并再次将其转换为文本,这让我很困惑

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

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