杰克逊序列化:忽略未初始化的 int
Jackson serialization: Ignore uninitialised int
现在首先,我已经阅读了本网站上的一些其他答案以及其他关于 jackson 序列化的答案,但它们都提供了忽略 null
字段的方法。然而,在 Java 中,int
不能是 null
.
我正在尝试 ObjectMap
一个 java 对象转换为 Json
但忽略任何 null
字段。这适用于字符串,但如果未初始化,int
s 最终会采用 0
的值,并且由于 0
不是 null
,因此不会忽略该字段。
private ObjectWriter mapper = new ObjectMapper().writer();
private myClass data = new myClass(); //class contains a string and int variable
data.setNumber(someInt); //set values
data.setString(someString);
String Json = mapper.writeValueAsString(data);
任何人都可以解释一下吗?
编辑:为了澄清,我尝试使用 Integer
class 作为数据类型,但导致转换为 Json
字符串以抛出 JsonProcessingException。
使用 int 包装器 Integer
。这样您就可以使用 null
值。
或者您可以使用 Jackson's JsonInclude annotation 在序列化时忽略空值。
@JsonInclude(Include.NON_NULL)
public class MyClass{
...
}
将 int
更改为 Integer
。
否则不,不可能以任何方式将 int 变量设置为 null。
使用 Jackson JsonInclude 注释:
@JsonInclude(Include.NON_DEFAULT)
解决了未分配的原始类型总是采用默认值的问题;在这种情况下,未分配的 int
变为 0
并随后被忽略。
现在首先,我已经阅读了本网站上的一些其他答案以及其他关于 jackson 序列化的答案,但它们都提供了忽略 null
字段的方法。然而,在 Java 中,int
不能是 null
.
我正在尝试 ObjectMap
一个 java 对象转换为 Json
但忽略任何 null
字段。这适用于字符串,但如果未初始化,int
s 最终会采用 0
的值,并且由于 0
不是 null
,因此不会忽略该字段。
private ObjectWriter mapper = new ObjectMapper().writer();
private myClass data = new myClass(); //class contains a string and int variable
data.setNumber(someInt); //set values
data.setString(someString);
String Json = mapper.writeValueAsString(data);
任何人都可以解释一下吗?
编辑:为了澄清,我尝试使用 Integer
class 作为数据类型,但导致转换为 Json
字符串以抛出 JsonProcessingException。
使用 int 包装器 Integer
。这样您就可以使用 null
值。
或者您可以使用 Jackson's JsonInclude annotation 在序列化时忽略空值。
@JsonInclude(Include.NON_NULL)
public class MyClass{
...
}
将 int
更改为 Integer
。
否则不,不可能以任何方式将 int 变量设置为 null。
使用 Jackson JsonInclude 注释:
@JsonInclude(Include.NON_DEFAULT)
解决了未分配的原始类型总是采用默认值的问题;在这种情况下,未分配的 int
变为 0
并随后被忽略。