杰克逊忽略列表属性

时间:2017-03-20 05:05:23

标签: java jackson jackson2

可以使用@JsonIgnoreProperties作为类级别注释来忽略类的属性。但是,假设您有以下两个类别;

class Client {

      @JsonIgnoreProperties ("owner")
      List<Vehicle> vehicles;
}


Class Vehicle {

      @JsonIgnoreProperties ("vehicles")
      Client owner;
}

我认为这会奏效。但显然JsonIgnoreProperties在列表中不起作用。我想它会检查java.util.List属性òwner`但它找不到它。

我想要的是一个基于首先检索对象的过滤器。如果首先检索到Vehicle,则显示所有者但不显示客户端所拥有的vehicles。如果首先检索Client,则显示vehicles但不显示每个Vehicle的所有者。这也避免了无休止的递归。

我的问题是如何忽略owner列表Vehiclevehicles对象中的属性Client

修改

使用@Kushan回答。

@JsonIgnoreProperties ("owner")
Class Vehicle {

   Client owner;

}

这将始终忽略owner信息。我打算得到的是,如果我有Client个对象并且我得到vehicles,那么我不需要owner生成的Vehicle信息。我已经拥有Client个对象。但是,如果我有一个Vehicle对象,我将需要它owner属性,不包括vehicles所有的Client

1 个答案:

答案 0 :(得分:0)

我不确定您是否被说过,所以我描述了在测试/示例部分中序列化数据时过滤数据的所有可能功能。例如:@JsonIgnore@JsonIgnoreProperties,{{1 {}},@JsonIgnoreType,按@JsonView / @JsonFilter序列化数据。您可以选择一个您喜欢的数据。

测试/实例

mixin
相关问题