【发布时间】:2018-01-31 16:53:58
【问题描述】:
目前,当输入 json 对象作为 POST 请求的主体时,Jersey 将忽略它无法识别的任何键/值对。
例子:
public class TestObject{
private String value1;
private Integer value2;
// appropriate getters and setters
}
JSON 对象:
{
"value1":"test",
"value2":1,
"value3":"wrong"
}
在上述情况下,Jersey 将接受两个预期值并创建 TestObject 忽略“value3”输入。
如果无法识别 JSON 对象中的任何内容,是否有办法强制 Jersey 抛出异常而不是忽略该值?
编辑:
我的控制器看起来像这样:
@POST
@Consumes("application/json")
public Response handleTestObject(TestObject testObject){
//method execution here
}
所以我依靠 Jersey 将 json 输入转换为 TestObject
【问题讨论】:
-
与其在 POST 正文中发送“错误”,不如尝试发送不同的状态码。例如,如果“错误”表示未填写某个值,则可以发送 400(错误请求)。
-
那个 value3 是用户输入的一部分,不是我的回应
-
你用什么将 Json 转换为对象?
-
stackoverflow.com/questions/31094305/… 。我觉得泽西岛会使用 Jackson/gson 进行转换。接受一个字符串并在转换为对象之前检查所有键。如果无效返回 400 。上面的链接将帮助您检查密钥
-
在尝试上述方法之前。尝试使用 Jackson 或 gson 将 json 转换为对象 urself。我很确定它应该抛出异常
标签: java json rest jersey-2.0 unmarshalling