Bean对象:
public class Student {
private String name;
private String gender;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Student [name=" + name + ", gender=" + gender + "]";
}
}
测试代码:
String jsons = "{\"gender\":\"male\"}";
Student stu = JSON.parseObject(jsons,Student.class);
System.err.println(stu);
jsons="{\"gender\":\"male\",\"name\":\"null\"}";
stu = JSON.parseObject(jsons,Student.class);
System.err.println(stu);
输出结果是一样的,但是输入的字符串一个是有name字段,一个是没有的。我想问下转换为Student对象时,不存在的字段为什么不是默认的null,为什么会是字符串“null”呢?
这样是没法区分字段是否存在的。还是说有其他方式可以判断呢?
还望解答下!
2条答案
按热度按时间kuuvgm7e1#
测试代码
输出
QA
转换为Student对象时,不存在的字段为什么不是默认的null,为什么会是字符串“null”呢?
在生成的对象里,确实是你想要的“默认的null”,但是print的时候会自动转换。上述测试代码就是验证这一点。
这样是没法区分字段是否存在的。还是说有其他方式可以判断呢?
可以使用"missing"等其他字符串代替你代码中的"null"字符串,避免冲突。
pxiryf3j2#
你把json串中numm前后的引号去掉