
您可以使用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'}}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)