1
假設我有以下POJO- 傑克遜序列化過程中把空的集合爲空以JSON
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空值?
只有當你有一個非空的Set時,這是錯誤的JSON輸出?我注意到你的'serialize'函數定義瞭如果該集合是空的,該怎麼做,但如果不是,該怎麼做。 – yshavit
不,這個錯誤的json是爲空集(size()== 0)生成的。對於其他情況,這是完全有效的。 –
我用'Serializer'得到'{「stringSet」:null}'你使用哪個版本的jackson?還請顯示您的代碼,序列化您的POJO –