如何在java pojo中区分JSON null值和default java null

sud*_*hra 5 java rest apache-camel camel-cxf

我在JSON下面了解

 

 {"id":"1","value":"some value"}

  

{"id":"2","value":null}

  

{"id":"3"}

 要保存上面的JSON数据我有java类:

    class myClass
    {
       private String id;
       private String value;
       public String getId() {
        return id;
       }
       public void setId(String id) {
        this.id = id;
       }
       public String getValue() {
        return value;
       }
       public void setValue(String value) {
        this.value = value;
      }
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中:id 2和id 3的值都为NULL

在java中,很难识别JSON中传递的空值和未传递的其他字段之间的区别,因此java pojo的默认值为NULL.

对我来说,id 2和id 3的值不应该相同.

是否可以在java中区分提供的JSON NULL和默认NULL?

kap*_*pex 3

最好不要区分值null缺失值,因为您必须问这个问题:这种区分并不容易,并且可能不适用于所有 JSON 库,尤其是在自动转换为 POJO 时。

它取决于 JSON 库是否有效,但您可以尝试向 POJO 添加一个额外的标志,该标志在调用 setter 时设置。例如这样:

class MyClass {

    private String value;
    private boolean isSetValue;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
        isSetValue = true;
    }

    public boolean getIsSetValue() {
        return isSetValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您计划序列化此 POJO,则需要getIsSetValue从序列化中排除,并且可能需要修改 JSON 序列化程序以用于getIsSetValue决定是否写入null值或根本不写入值。