javaspring(jackson)注解,用于not present、present but null和present with value

4xrmg8kj  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(201)

因此,我们面临的问题是,我们需要知道通过springrest控制器接收到的json的以下可能状态。这些国家是:
缺失(不存在)
空(存在但空)
数据(与数据一起提供)
原因是我们需要知道哪些项丢失了,而不是设置为null。java将所有字段的缺省值设置为null,无论是否丢失,这都不会让我们知道它是否存在。我们已经尝试使用optional,但是由于null(变成optional.empty())被认为是存在的,但是在一个必填字段上它并不是真正存在的,所以我们在必填字段上遇到了问题。希望spring/jackson和/或annotations能够实现我们的目标,或者从其他人那里得到解决这个问题的方法。
例子:

public class test {
    public String var1;
    public String var2;
    public String var3;
}

json如下所示:

{
    "var1": "Test",
    "var2": null
}

当spring读取并创建示例时,它使var2和var3都为null,var1为“test”。所以我们不能区分不存在和无效。
我们尝试了以下方法:

public class test {
    @NotNull
    public Optional<String> var1;
    @NotNull
    public Optional<String>var2;
    public Optional<String>var3;
}

给定相同的json。当它在spring控制器中解组时,它不会抛出错误的请求错误,因为null是可选的。empty()使它成为不需要某种额外编码的对象。
注意:我们试图弄清楚这一点的原因是我们有一个包含数千个字段的模式,并使用jsonschema2pojo转换为javapojo类。我们希望有一个解决方案,我们可以很容易地修改java类,比如一个注解或其他东西,这样我们就不会对生成的类进行大量更改。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题