我需要将一个对象数组传递给我的控制器。我正在尝试使用@RequestBody,如下例所示:
我在我的项目中复制了这个例子,但每次调用它时都会收到“错误请求”错误。我怀疑这是因为我使用的是Spring 4和Jackson 2,但我不知道如何让它工作。
这应该在这种环境下工作吗?有一个更好的方法吗?
答案 0 :(得分:1)
是的,这应该适用于那种环境(即使用Spring和Jackson的那些版本!)。当面临一个神秘的错误时,我的目标是将日志设置调到TRACE,以防任何库失败。
我在我的IDE中设置了这个示例(使用Spring4和Jackson2),我立即遇到了一个400"错误请求"错误也是如此。我在org.springframework.web
和com.fasterxml.jackson.core
上调试了调试设置,发现Jackson2正在吐出异常:
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of ca.ted.TestController$Person[] out of START_OBJECT token
这是因为JSON被送到jQuery.ajax()
电话。我删除了包裹数组的"persons":{}
对象,而只发送了数组:
var arr = [
{
"firstName" : "Ramesh",
"id" : "id1",
"lastName" : "Kotha"
},
{
"firstName" : "Sathish",
"id" : "id2",
"lastName" : "Kotha"
}
];
我这样做但遇到以下异常:
com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class ca.ted.TestController$Person]: can not instantiate from JSON object (need to add/enable type information?)
原来这是因为Person
是我控制器中的内部类。我把它移到了自己的文件ca.ted.Person
,一切都很顺利。
希望这有帮助!