【发布时间】:2013-04-02 01:08:05
【问题描述】:
我有以下。
@XmlRootElement
public class SomeObject {
private String requiredField;
@XmlElement(name="address", required=true)
public String getRequiredField() {
return requiredField;
}
public void setRequiredField(String requiredField) {
this.requiredField = requiredField;
}
}
但是,当相应的 Jersey 资源使用生成此对象所需的 JSON 时,它会成功创建该对象,无论是否带有按要求注释的字段。
使用 Jersey 和 JAXB,或者直接相关的技术,有没有办法确保 requiredField 的值出现在消费的 JSON 中?上面的示例缺少什么?
例子:
我想要的是拒绝如下调用,因为 JSON 正文不包含 requiredField 的值。
curl -i -X POST -H 'content-type:application/json' -d '{}' http://some/uri
我更希望这样的工作。
curl -i -X POST -H 'content-type:application/json' -d '{"requiredField":"Hello, world!"}' http://some/uri
【问题讨论】:
-
如果您正在寻找以空值而不是作为不存在节点输出的空值,您可能会发现以下有用:blog.bdoughan.com/2012/04/…
-
我添加了一个更具体的示例。
-
Marc M.,你找到解决办法了吗?
-
@FagnerBrack 我不相信我做到了。我想我刚刚在我的 utils 包中创建了一个验证方法并在资源级别运行它。不像注释之类的声明性那样无缝,但它是资源级别的用途。
-
我很抱歉这个菜鸟,但你所说的“资源级别”是什么意思?您的意思是只调用方法而不使用任何内置功能?
标签: xml json jaxb annotations jersey