Jackson从外部库中忽略超类的所有属性

Jackson从外部库中忽略超类的所有属性,第1张

Jackson从外部库中忽略超类的所有属性

您可以使用混入

@JsonIgnoreProperties

对于这些示例,假定基本的ORM类和扩展名是:

public class DbItem {    public String dbPropertyA;    public String dbPropertyB;}

public class Person extends DbItem {    public String index;    public String firstName;    public String lastName;}

分别。

使用混入

混合是杰克逊从对象本身理解的反序列化指令的抽象。这是自定义第三方类的反序列化的一种方法。为了定义混入,必须创建一个抽象类并向中注册

ObjectMapper

混合定义示例
public abstract class PersonMixIn {    @JsonIgnore public String dbPropertyA;    @JsonIgnore public String dbPropertyB;    @JsonIgnore public String index;}
注册混音
@Testpublic void serializePersonWithMixIn() throws JsonProcessingException {    // set up test data including parent properties    Person person = makeFakePerson();    // register the mix in    ObjectMapper om = new ObjectMapper() .addMixIn(Person.class, PersonMixIn.class);    // translate object to JSON string using Jackson    String json = om.writevalueAsString(person);    assertFalse(json.contains("dbPropertyA"));    assertFalse(json.contains("dbPropertyB"));    assertFalse(json.contains("index"));    System.out.println(json);}
@JsonIgnoreProperties

如果要避免创建类并配置

ObjectMapper
@JsonIgnoreProperties
可以使用注释。只需注释要序列化的类并列出要排除的属性。

示例可序列化对象
@JsonIgnoreProperties({"index", "dbPropertyA", "dbPropertyB"})public class Person extends DbItem {    public String index;    public String firstName;    public String lastName;}
实际观看
@Testpublic void serializePersonWithIgnorePropertiesAnnotation() throws JsonProcessingException {    // set up test data including parent properties    Person person = makeFakePerson();    ObjectMapper om = new ObjectMapper();    // translate object to JSON string using Jackson    String json = om.writevalueAsString(person);    assertFalse(json.contains("dbPropertyA"));    assertFalse(json.contains("dbPropertyB"));    assertFalse(json.contains("index"));    System.out.println(json);}


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

原文地址: http://outofmemory.cn/zaji/5429569.html

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

发表评论

登录后才能评论

评论列表(0条)

保存