杰克逊序列化:忽略未初始化的

时间:2015-10-27 15:26:22

标签: java json serialization null int

现在首先,我已经阅读了本网站上的其他一些答案以及其他关于杰克逊序列化的答案,但它们都提供了忽略null字段的方法。但是,在Java中,int不能是null

我正在尝试将ObjectMap一个java对象转换为Json,但忽略任何null字段。这适用于字符串,但如果未初始化,则int最终会获得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类作为数据类型,但导致转换为Json字符串以抛出JsonProcessingException。

3 个答案:

答案 0 :(得分:8)

使用Jackson JsonInclude注释:

@JsonInclude(Include.NON_DEFAULT)

解决了未分配的基元类型总是采用默认值的问题;在这种情况下,未分配的int变为0,随后会被忽略。

答案 1 :(得分:4)

使用int wrapper Integer。这样您就可以使用null值。

或者,您可以在序列化时使用Jackson's JsonInclude annotation来忽略空值。

@JsonInclude(Include.NON_NULL)  
public class MyClass{
    ...
}

答案 2 :(得分:2)

int更改为Integer

否则不行,不可能以任何方式使用null变量。

相关问题