假设我有以下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中写入空值?
答案 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;
}
}
这对我来说很好。