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
。别无选择