java – 使用gson反序列化时将默认值设置为变量

前端之家收集整理的这篇文章主要介绍了java – 使用gson反序列化时将默认值设置为变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将 JSON转换为Java对象.当一对的某个值为空时,应该设置一些默认值.

这是我的POJO

  1. public class Student {
  2. String rollNo;
  3. String name;
  4. String contact;
  5. String school;
  6.  
  7. public String getRollNo() {
  8. return rollNo;
  9. }
  10. public void setRollNo(String rollNo) {
  11. this.rollNo = rollNo;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public String getSchool() {
  20. return school;
  21. }
  22. public void setSchool(String school) {
  23. this.school = school;
  24. }
  25. }

JSON对象示例

  1. {
  2. "rollNo":"123","name":"Tony","school":null
  3. }

所以如果学校是空的,我应该把它变成一个默认值,比如“学校”:“XXX”.在反序列化对象时,如何配置Gson

解决方法@H_502_14@
如果null在JSON中,Gson将覆盖您可能在POJO中设置的任何默认值.你可以去创造一个 custom deserializer的麻烦,但是在这种情况下可能是过度的.

我认为最简单(并且可以说是最适合你的用例)的事情是相当于Lazy Loading.例如:

  1. private static final String DEFAULT_SCHOOL = "ABC Elementary";
  2. public String getSchool() {
  3. if (school == null) school == DEFAULT_SCHOOL;
  4. return school;
  5. }
  6. public void setSchool(String school) {
  7. if (school == null) this.school = DEFAULT_SCHOOL;
  8. else this.school = school;
  9. }

注意:这个解决方案的大问题是为了更改默认值,您必须更改代码.如果您希望默认值可自定义,则应该使用上面链接自定义解串器.

猜你在找的Java相关文章