我知道在将对象序列化为JSON时,有很多关于跳过具有空值的字段的问题。
请考虑以下类
public class User {
Long id = 42L;
String name = "John";
}
和JSON字符串
{"id":1,"name":null}
当做
User user = gson.fromJson(json, User.class)
我希望user.id
为“1”,user.name
为“John”。
这是可能的,无论是Gson或Jackson在一个通用的方式(没有特殊的TypeAdapter
或类似)?
4条答案
按热度按时间2sbarzqh1#
在我的示例中,我所做的是在getter上设置一个默认值。
我想这对许多字段来说都是一件痛苦的事情,但它只适用于字段数量较少的简单情况
lmvvr0a82#
很多时间过去了,但是如果你像我一样遇到这个问题,并且你至少使用Jackson2.9,那么你可以解决这个问题的一种方法是使用JsonSetter和null。SKIP:
这样,当遇到null时,将不会调用setter。
注:更多详细信息请参见here。
8xiog9wr3#
要跳过使用TypeAdapters,我会在调用setter方法时让POJO执行空值检查。
或者看看
注解需要在类级别,而不是方法级别。
对于反序列化,您可以在类级别使用以下命令。
@ JSON忽略属性(忽略未知= true)
mbyulnm04#
虽然这不是最简洁的解决方案,但是使用Jackson,您可以使用自定义的
@JsonCreator
自行设置属性: