Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson-在序列化到json期间将空集合视为null_Java_Json_Jackson - Fatal编程技术网

Java Jackson-在序列化到json期间将空集合视为null

Java 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方法中,你可能只是在做

假设我有以下POJO

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与jackson
2.6.6
2.8.5
@NicolasFilotto的代码。您是否在字段声明中初始化了集合?如果是,那么可能是我的jacksonbean配置中的问题。将查看我的代码并更新我的问题。只有当您有一个非空集时,才会有错误的json输出吗?我注意到您的
serialize
函数定义了当集合为空时该做什么,而不是当集合为空时该做什么。不,这个错误的json是为空集合生成的(size()==0)。对于其他情况,它是完全有效的。我用你的
序列化程序
得到
{“stringSet”:null}
,你使用哪个版本的jackson?还请显示序列化您的POJOCannot与jackson
2.6.6
2.8.5
@NicolasFilotto的代码。您是否在字段声明中初始化了集合?如果是,那么可能是我的jacksonbean配置中的问题。将查看我的代码并更新我的问题。
public void setStringSet(Set<String> stringSet){
   if(stringSet.isEmpty()){
      this.stringSet.clear();
   } else{
      this.stringSet = stringSet;
   }
}