繁体   English   中英

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

[英]Jackson - treat empty collection as null during serialization to json

假设我有以下POJO

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

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

{"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();
        }

    }
}

但它的输出如下

{"stringSet":}

如何在json中写入null值?

我刚才有完全相同的要求。

你得到一个[] 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;
   }
}

这对我来说很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM