杰克逊 - 在序列化到json期间将空集合视为null

时间:2016-11-23 20:05:01

标签: java json jackson

假设我有以下POJO

boolean

当我将它序列化到json时,我得到了以下输出

public class Pojo {
   private Set<String> stringSet = new HashSet<>();
}

但是,根据要求,我需要以下内容:

{"stringSet":[]}

我尝试过实施自定义{"stringSet":null}

StdSerializer<Set>

但它的输出如下

public class CustomStdSerializer extends StdSerializer<Set> {
    protected CustomStdSerializer() {
        super(Set.class);
    }

    @Override
    public void serialize(Set set, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        if (set.size() == 0){
            jsonGenerator.writeNull();
        }

    }
}

如何在json中写入空值?

1 个答案:

答案 0 :(得分:0)

前一段时间我有完全相同的要求。

你得到[] stringSet的原因是因为在声明期间你正在做new HashSet<>();

我很确定你的setter方法可能只是在做

public void setStringSet(Set<String> stringSet){
   this.stringSet = stringSet;
}

而你可以做

public void setStringSet(Set<String> stringSet){
   if(stringSet.isEmpty()){
      this.stringSet.clear();
   } else{
      this.stringSet = stringSet;
   }
}

这对我来说很好。