Java 如果值不在Json中,则不反序列化该值
我定义这个类Java 如果值不在Json中,则不反序列化该值,java,json,jersey,jackson,deserialization,Java,Json,Jersey,Jackson,Deserialization,我定义这个类 public class PostServerActionsRequest { private ChangePassword changePassword; private Reboot reboot; private Rebuild rebuild; private Resize resize; private String confirmResize; private String revertResize; priva
public class PostServerActionsRequest {
private ChangePassword changePassword;
private Reboot reboot;
private Rebuild rebuild;
private Resize resize;
private String confirmResize;
private String revertResize;
private CreateImage createImage;
//constructor + getter & setter
}
我使用jackson json处理器解析多个json请求。情况如下:我收到一个具有此结构的json:
//Json A
{
"reboot": {
"type": "SOFT"
}
}
其中,我使用名为type的私有字符串属性定义类Reboot。显然,在json中没有相对等价物的属性在反序列化过程中被jackson设置为null。所以序列化我得到了这个json:
//Json B
{
"changePassword": null,
"reboot": {
"type": "SOFT"
},
"rebuild": null,
"resize": null,
"confirmResize": null,
"revertResize": null,
"createImage": null
}
现在我知道了如何告诉jackson在序列化过程中忽略null或空值,例如使用类PostServerActionsRequest上方的注释@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT),但我的问题是,可以告诉jackson不要设置为不在json请求(json A)中的null值在反序列化过程中?这是因为我想获得一个类,它只有json请求中的值。
我希望我清楚地解释了我的问题,并提前感谢您的帮助
可以告诉jackson在反序列化过程中不要设置为json请求(json A)中没有的空值吗
不,这是不可能的
事实上,你所问的毫无意义。当您通过从JSON反序列化或任何其他方式创建PostServerActionsRequest
时,PostServerActionsRequest
实例中的每个字段都必须有一个值
将Java对象的字段称为“无值”是毫无意义的。。。在你所说的意义上。对于引用类型的字段,该值必须是对某个对象的引用。。。或null
。别无选择