在REST api上,我收到一个Json,该Json映射到Java对象:
@RequestMapping(value = "/example", method = RequestMethod.POST)
public @ResponseBody
ReturnObject doReturn(@RequestBody ProblemObject requestBody)
该对象很简单:
public class ProblemObject implements Serializable {
private String field1;
private String field2;
public ProblemObject(String field2) {
this.field2 = field2;
}
public ProblemObject(String field1, String field2) {
this.field1 = field1;
this.field2 = field2;
}
}
问题在于,Jackson试图反序列化甚至格式错误的JSON,但效果却不太理想,例如,它接受:
"field1": "test",
"field2": "test"
}
注意没有开括号。这导致对象被映射到具有值为“ field2”且field2为空的field1。
它也不会接受逗号,甚至会导致更糟糕的结果。
目前,我唯一想到的替代方法是实现自定义解串器,但这并不是最佳的恕我直言。
有没有办法使杰克逊更加严格?
显然这是Jackson的TokenBuffer中的错误。一个问题已经解决,Jackson开发人员已确认该错误。
这是由于单个String构造函数。如果可能的话,删除构造函数是一个临时的解决方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句