class Foo
{
String name;
Integer number;
@JsonCreator
public Foo(
@JsonProperty("name") String name,
@JsonProperty("number") Integer number)
{
if (name == null && number == null)
throw new IllegalArgumentException("at least one of (name, number) fields must be non-null");
this.name = name;
this.number = number;
}
// ... more methods ...
}
3条答案
按热度按时间y1aodyip1#
我总是在得到Jackson反序列化API后检查一些字段是否为空。但是我认为您可以扩展Jackson反序列化器来重写反序列化方法以达到您的目的。
xytpbqjk2#
检查它是否等于空对象:
6ie5vjzr3#
如果需要一组字段中的 all:
如果使用建构函式来还原序列化对象,您可以使用
@JsonProperty
注解中的required
。例如,对于类
Foo
,字段name
是必需的:当尝试从没有
name
属性的JSON反序列化时,将失败,并返回MismatchedInputException
:请注意,如果JSON对象显式地将字段设置为
null
,则会成功:如果一组字段中的 any 必须存在:
这是上一个例子的简单变体,因为我们可以将验证逻辑放在
@JsonCreator
注解的构造函数中。例如: