Setting Default value to a variable when deserializing using gson

后端 未结 3 1819
南旧
南旧 2020-12-03 20:40

I am trying to convert JSON to Java object. When a certain value of a pair is null, it should be set with some default value.

Here is my POJO:



        
相关标签:
3条回答
  • 2020-12-03 21:10

    I think that the way to do this is to either write your no-args constructor to fill in default values, or use a custom instance creator. The deserializer should then replace the default values for all attributes in the JSON object being deserialized.

    0 讨论(0)
  • 2020-12-03 21:20

    You can simply make a universal function that checks for null

    model.SchoolName= stringNullChecker(model.SchoolName);
    
    public static String stringNullChecker(String val) {
            if (null == val) val = "";
            return val;
    }
    
    0 讨论(0)
  • 2020-12-03 21:35

    If the null is in the JSON, Gson is going to override any defaults you might set in the POJO. You could go to the trouble of creating a custom deserializer, but that might be overkill in this case.

    I think the easiest (and, arguably best given your use case) thing to do is the equivalent of Lazy Loading. For example:

    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;
    }
    

    Note: The big problem with this solution is that in order to change the Defaults, you have to change the code. If you want the default value to be customizable, you should go with the custom deserializer as linked above.

    0 讨论(0)
提交回复
热议问题