jackson @JsonInclude按类筛选“属性

kb5ga3dv  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(130)

我正在将类序列化为XML。我发现@JsonInclude非常有用。但是,我在按属性过滤类时遇到了问题。在xml中,如果是美国地址,我需要使用@JsonProperty为字段提供一组注解。因此,我尝试使用Include注解来仅显示基于国家的相关字段。
美国地址需要使用USAddress作为 Package 元素名称。外国地址需要使用ForeignAddress作为 Package 元素名称以及州/邮政编码的不同元素名称。
有没有办法在过滤器中访问类和它的属性?我试过对两种类型的地址都使用超类,但是使用Bazel时,我遇到了循环依赖问题。我是bazel的超级新手:P

public class Thing {
  @JsonInclude(value = Include.CUSTOM, valueFilter = CountryFilter.class)
  private final USAddress usAddress = new USAddress({line1: "123 MockingBird Ln", country: "US"});
  @JsonInclude(value = Include.CUSTOM, valueFilter = CountryFilter.class)
  private final ForeignAddress foreignAddress = new ForeignAddress({line1: "123 MockingBird Ln", country: "DE"});
}

public class CountryFilter {
  @Override
  public boolean equals(Object obj) {
    return ...; // This is where I'm having issues. Would like it to do something like obj.getCountry().equals("US").
  }
}
66bbxpm5

66bbxpm51#

我最终使用了@JsonInclude(Includ.NON_NULL),然后在构造函数中使用了一个条件来选择性地设置地址。

相关问题