【发布时间】:2015-10-28 14:46:34
【问题描述】:
我在使用 @RequestBody MyObject 时注意到,如果您没有在 json 中指定所有参数,那么无论如何它们都会被赋予默认值。
public class MyObject {
@JsonCreator
public MyObject (@JsonProperty("a") long a,
@JsonProperty("b") double b,
@JsonProperty("c") String c,
}
所以一个json请求如下:
{
"a" : 0
}
反序列化后将产生以下内容
c == null, b == 0.0, a = 0
controller方法,其中json被requestbody反序列化如下:
@RequestMapping(value = {"/doSomething/"}, method = RequestMethod.POST)
@ResponseBody void something(@RequestBody MyObject myObject) {
// Logic here.
}
在将 json 解析为对象时,我是否可以强制 requestbody 确保所有参数都存在?
编辑:
因此,例如一个字符串将被赋予一个空值,而一个双精度将被赋予一个值 0.0。
从我所阅读的内容来看,这是我正在使用的杰克逊库所期望的。目标是了解何时将 json 反序列化为对象是否缺少 json 属性,而不是让它们自动赋予默认值。
【问题讨论】:
-
请举例说明您注意到的。
-
我已经更新了问题。我似乎在 SO 上有一个问题,我的大部分问题都没有得到解答,所以任何关于命名/措辞/解释的建设性建议都将不胜感激。
-
您想如何知道是否有缺少成员?通过异常?
-
异常会起作用。我只需要知道 json 何时无效,以便我可以停止继续。
标签: java json spring rest jackson