Ignore null fields when DEserializing JSON with Gson or Jackson

后端 未结 3 1735
抹茶落季
抹茶落季 2021-02-14 01:45

I know there\'s lots of questions about skipping fields with a null value when serializing objects to JSON. I want to skip / ignore fields with null values when deserializing J

相关标签:
3条回答
  • 2021-02-14 02:12

    To skip using TypeAdapters, I'd make the POJO do a null check when the setter method is called.

    Or look at

    @JsonInclude(value = Include.NON_NULL)
    

    The annotation needs to be at Class level, not method level.

    @JsonInclude(Include.NON_NULL) //or Include.NON_EMPTY, if that fits your use case 
    public static class RequestPojo {
        ...
    }
    

    For Deserialise you can use following at class level.

    @JsonIgnoreProperties(ignoreUnknown = true)

    0 讨论(0)
  • 2021-02-14 02:26

    Albeit not the most concise solution, with Jackson you can handle setting the properties yourself with a custom @JsonCreator:

    public class User {
        Long id = 42L;
        String name = "John";
    
        @JsonCreator
        static User ofNullablesAsOptionals(
                @JsonProperty("id") Long id,
                @JsonProperty("name") String name) {
            User user = new User();
            if (id != null) user.id = id;
            if (name != null) user.name = name;
            return user;
        }
    }
    
    0 讨论(0)
  • 2021-02-14 02:30

    What i did in my case is to set a default value on the getter

    public class User {
        private Long id = 42L;
        private String name = "John";
    
        public getName(){
           //You can check other conditions
           return name == null? "John" : name;
        }
    }
    

    I guess this will be a pain for many fields but it works in the simple case of less number of fields

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