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 JSON to an object.
Consider the class
public class User {
Long id = 42L;
String name = "John";
}
and the JSON string
{"id":1,"name":null}
When doing
User user = gson.fromJson(json, User.class)
I want user.id to be '1' and user.name to be 'John'.
Is this possible with either Gson or Jackson in a general fashion (without special TypeAdapters or similar)?
解决方案
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;
}
}