Java Jackson-在序列化到json期间将空集合视为null
假设我有以下POJOJava Jackson-在序列化到json期间将空集合视为null,java,json,jackson,Java,Json,Jackson,假设我有以下POJO public class Pojo { private Set<String> stringSet = new HashSet<>(); } 但是,根据要求,我需要以下内容: {"stringSet":null} 我已尝试实现自定义StdSerializer 如何在json中写入空值?我刚才也有同样的要求 获取[]stringSet的原因是,在声明过程中,您正在执行newhashset() 我很肯定,在你的setter方法中,你可能只是在做
public class Pojo {
private Set<String> stringSet = new HashSet<>();
}
但是,根据要求,我需要以下内容:
{"stringSet":null}
我已尝试实现自定义StdSerializer
如何在json中写入空值?我刚才也有同样的要求 获取[]stringSet的原因是,在声明过程中,您正在执行
newhashset()代码>
我很肯定,在你的setter方法中,你可能只是在做一些简单的事情
public void setStringSet(Set<String> stringSet){
this.stringSet = stringSet;
}
public void setStringSet(Set stringSet){
this.stringSet=stringSet;
}
相反,你可以这样做
public void setStringSet(Set<String> stringSet){
if(stringSet.isEmpty()){
this.stringSet.clear();
} else{
this.stringSet = stringSet;
}
}
public void setStringSet(Set stringSet){
if(stringSet.isEmpty()){
this.stringSet.clear();
}否则{
this.stringSet=stringSet;
}
}
这对我来说很好。我刚才也有同样的要求
获取[]stringSet的原因是,在声明过程中,您正在执行newhashset()代码>
我很肯定,在你的setter方法中,你可能只是在做一些简单的事情
public void setStringSet(Set<String> stringSet){
this.stringSet = stringSet;
}
public void setStringSet(Set stringSet){
this.stringSet=stringSet;
}
相反,你可以这样做
public void setStringSet(Set<String> stringSet){
if(stringSet.isEmpty()){
this.stringSet.clear();
} else{
this.stringSet = stringSet;
}
}
public void setStringSet(Set stringSet){
if(stringSet.isEmpty()){
this.stringSet.clear();
}否则{
this.stringSet=stringSet;
}
}
这对我来说很好。只有当您有一个非空集时,json输出才会出错吗?我注意到您的serialize
函数定义了当集合为空时该做什么,而不是当集合为空时该做什么。不,这个错误的json是为空集合生成的(size()==0)。对于其他情况,它是完全有效的。我用你的序列化程序得到{“stringSet”:null}
,你使用哪个版本的jackson?还请显示序列化您的POJOCannot与jackson2.6.6
和2.8.5
@NicolasFilotto的代码。您是否在字段声明中初始化了集合?如果是,那么可能是我的jacksonbean配置中的问题。将查看我的代码并更新我的问题。只有当您有一个非空集时,才会有错误的json输出吗?我注意到您的serialize
函数定义了当集合为空时该做什么,而不是当集合为空时该做什么。不,这个错误的json是为空集合生成的(size()==0)。对于其他情况,它是完全有效的。我用你的序列化程序得到{“stringSet”:null}
,你使用哪个版本的jackson?还请显示序列化您的POJOCannot与jackson2.6.6
和2.8.5
@NicolasFilotto的代码。您是否在字段声明中初始化了集合?如果是,那么可能是我的jacksonbean配置中的问题。将查看我的代码并更新我的问题。
public void setStringSet(Set<String> stringSet){
if(stringSet.isEmpty()){
this.stringSet.clear();
} else{
this.stringSet = stringSet;
}
}