簡體   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