杰克逊:将不同的字段映射到一个JsonProperty

时间:2015-09-11 17:10:21

标签: java jackson

我有一个要求,其中我有一个名为Response的POJO类有3个不同的字段,在这3个字段中,只有其中一个将根据某些条件设置。我希望无论何时设置其中任何一个,都应该使用JsonProperty名称'data'返回。但是,在使用@JsonProperty(“data”)定义所有3个字段时,我得到的是异常。有什么方法可以用杰克逊来实现这个目标吗?

java.lang.IllegalArgumentException:表示属性“data”的多个字段:

@JsonInclude(Include.NON_NULL)
public class Response {

    @JsonProperty("data")
    private List<Z> zList;

    @JsonProperty("data")
    private List<Y> yList;

    @JsonProperty("data")
    private List<x> xList;

1 个答案:

答案 0 :(得分:0)

你可以制作一个像以下一样的吸气剂:

@JsonProperty("data")
public List getData(){
   if(zList != null){
       return zList;
   }else if(yList != null){
      return yList;
   }
   else if(xList != null) {
       return xList;
   }else{
     return Collections.emptyList(); //or whatever
  }
}

记得从字段中删除jsonproperty注释。