我正在尝试将
JSON转换为Java对象.当一对的某个值为空时,应该设置一些默认值.
这是我的POJO:
- public class Student {
- String rollNo;
- String name;
- String contact;
- String school;
- public String getRollNo() {
- return rollNo;
- }
- public void setRollNo(String rollNo) {
- this.rollNo = rollNo;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getSchool() {
- return school;
- }
- public void setSchool(String school) {
- this.school = school;
- }
- }
JSON对象示例
- {
- "rollNo":"123","name":"Tony","school":null
- }
所以如果学校是空的,我应该把它变成一个默认值,比如“学校”:“XXX”.在反序列化对象时,如何配置Gson?
解决方法@H_502_14@
如果null在JSON中,Gson将覆盖您可能在POJO中设置的任何默认值.你可以去创造一个
custom deserializer的麻烦,但是在这种情况下可能是过度的.
我认为最简单(并且可以说是最适合你的用例)的事情是相当于Lazy Loading.例如:
- private static final String DEFAULT_SCHOOL = "ABC Elementary";
- public String getSchool() {
- if (school == null) school == DEFAULT_SCHOOL;
- return school;
- }
- public void setSchool(String school) {
- if (school == null) this.school = DEFAULT_SCHOOL;
- else this.school = school;
- }
注意:这个解决方案的大问题是为了更改默认值,您必须更改代码.如果您希望默认值可自定义,则应该使用上面链接的自定义解串器.
我认为最简单(并且可以说是最适合你的用例)的事情是相当于Lazy Loading.例如:
- private static final String DEFAULT_SCHOOL = "ABC Elementary";
- public String getSchool() {
- if (school == null) school == DEFAULT_SCHOOL;
- return school;
- }
- public void setSchool(String school) {
- if (school == null) this.school = DEFAULT_SCHOOL;
- else this.school = school;
- }
注意:这个解决方案的大问题是为了更改默认值,您必须更改代码.如果您希望默认值可自定义,则应该使用上面链接的自定义解串器.