我有一个这样的POJO。
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Test {
private int a;
private String b;
}
如果属性"a"的值为0,我希望排除它。字符串b被排除在外
@JsonInclude(JsonInclude.Include.NON_NULL)
我唯一能做的就是将int数据类型转换为Integer Object,并在setter中显式地将值设置为NULL(如果值为0(。
将感谢任何其他建议或正确的解决方案
选项1:
照你说的做:将int
更改为Integer
,然后使用@JsonInclude(Include.NON_NULL)
。因为基元类型有默认值,并且它们的值不能与null
进行比较,所以必须将int
包装为Integer
。请参见基本数据类型。嗯,这是更干净的方式。
选项2:
使用本答案中描述的方法,改为使用@JsonInclude(Include.NON_DEFAULT)
(请参阅Jackson-annotifications API(,这样将忽略默认值(以及对象的null
值(。
注意:
如果您只想在具有null
-/默认值时排除特定字段(在您的情况下为int
/Integer
-a
-字段(,而当其他字段具有null
-/默认值,则应包括其他字段(在我们的情况下,为String
-b
-字段(。