如何确定JSON密钥是否已设置为null或未提供

时间:2018-11-20 01:07:27

标签: java json

我正在使用gson将JSON转换为我的POJO。如果我没有在JSON中传递特定参数(整个参数,而不仅仅是值),它将自动初始化为null。 当我将该参数值传递为null时,是否有办法找出上述null和得到的null之间的区别。

P.S。我无法将默认转换从JSON更改为POJO

2 个答案:

答案 0 :(得分:0)

在您的课程中使用默认值。如果该字段未传递json字符串,则该值为默认值。示例代码如下。

public class User {
    private String name;
    private String age="not set";

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public class GsonClient {
    public static void main(String[] args) {
        String usersJson = "[ { \"name\": \"henry\" }, { \"name\": \"justin\",\"age\":null } ]";
        Gson gson = new GsonBuilder().serializeNulls().create();
        User[] usersWithAge = gson.fromJson(usersJson, User[].class);
        for (User user : usersWithAge) {
            System.out.println(user);
        }
    }
}

输出在这里

User{name='henry', age=not set}
User{name='justin', age=null}

答案 1 :(得分:0)

如果值设置为null或未定义,

Object.keys(theObject)将包含键。另外,Object.hasOwnProperty(...)也会让您知道。

因此,将JSON转换为对象并检查键,以查看该值是否被编组为未定义,空值或不存在。