杰克逊有条件@JsonUnwrapped

杰克逊有条件@JsonUnwrapped,第1张

杰克逊有条件@JsonUnwrapped

您可以使用MixIn功能。使用此要素

POJO
类与
Jackson
注释分离。您可以使用在运行时中添加必要的注释
MixIn
。请参见以下示例

import com.fasterxml.jackson.annotation.JsonUnwrapped;import com.fasterxml.jackson.databind.ObjectMapper;public class JacksonTest {    private static final String UNWRAPPED_JSON = "{n" + "  "age" : 13,n" + "  "first" : "Huckleberry",n" + "  "last" : "Finn"n" + "}";    @Test    public void test() throws IOException {        System.out.println("### Serialize without unwrapped annotation ###");        ObjectMapper serializer = new ObjectMapper();        System.out.println(serializer.writerWithDefaultPrettyPrinter().writevalueAsString(createParent()));        System.out.println("### Deserialize with unwrapped annotation ###");        ObjectMapper deserializer = new ObjectMapper();        deserializer.addMixInAnnotations(Parent.class, ParentMixIn.class);        System.out.println(deserializer.readValue(UNWRAPPED_JSON, Parent.class));    }    private Parent createParent() {        Name name = new Name();        name.first = "Tom";        name.last = "Sawyer";        Parent parent = new Parent();        parent.setAge(12);        parent.setName(name);        return parent;    }}class Parent {    private int age;    private Name name;    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public Name getName() {        return name;    }    public void setName(Name name) {        this.name = name;    }    @Override    public String toString() {        return "Parent{" +     "age=" + age +     ", name=" + name +     '}';    }}interface ParentMixIn {    @JsonUnwrapped    Name getName();}class Name {    public String first, last;    @Override    public String toString() {        return "Name{" +     "first='" + first + ''' +     ", last='" + last + ''' +     '}';    }}

上面的程序打印:

### Serialize without unwrapped annotation ###{  "age" : 12,  "name" : {    "first" : "Tom",    "last" : "Sawyer"  }}### Deserialize with unwrapped annotation ###Parent{age=13, name=Name{first='Huckleberry', last='Finn'}}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4979589.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存