我正在将一个2D数组JSON传递给一个spring控制器,但是得到了jackson错误。
org.codehaus.jackson.map.JsonMappingException:
Can not deserialize instance of java.lang.String[] out of VALUE_NUMBER_INT token
我的javascript 2D数组如下所示。
[ ["John", "Doe", "worker", "fulltime"],
["Adam", "Smith", "nonworker", "temp"],
["Jane", "Doe", "worker", "fulltime"] ]
被映射到2D数组的bean类,如下所示。
public class MyBean implements java.io.Serializable {
private static final long serialVersionUID = -3948256457L;
String[][] workInfo = null;
public String[][] getWorkInfo() {
return workInfo;
}
public void setWorkInfo(String[][] workInfo) {
this.workInfo = workInfo;
}
}
在弹簧控制器中,我使用的是这样的东西。
public ModelAndView addData(@RequestBody MyBean tempForm) throws Exception{
ModelAndView model = new ModelAndView(new org.springframework.web.servlet.view.json.MappingJacksonJsonView());
try{
myService.addData(tempForm);
model.addObject("mesage", "success");
}
catch(Exception e)
{
model.addObject("mesage", "error");
log.error("error:"+e);
}
}
有人能建议我怎么解决这个问题吗。
发布于 2013-09-19 15:39:26
我通过检查我的2D数组的json对象来解决这个问题。它把它变成了一维数组和其他值的混合。在表单bean端,它期待的是一个2D数组,而jackson认为它是一维数组,但无法翻译。
org.springframework.web.servlet.view.json.MappingJacksonJsonView());模型=新ModelAndView (新ModelAndView)
进行转换,所以在大多数情况下,如果对象在双方都被发送到类似的对象,则不需要在表单bean类中添加jackson注释,例如,在我的示例中,我发送了一个javascript 2D数组,而在我的表单bean中,我定义了一个2D数组。还要确保在您的jsp或其他页面中有一个表单标记,等等。
发布于 2013-09-17 08:59:34
您确定您的数组是矩形大小的吗?
您应该能够通过一个列表来完成这个任务:
List<List<String>> workInfo;
然后,如果需要,则转换为String[][]
。
你可以:
ObjectMapper mapper = new ObjectMapper();
mapper.canSerialize(MyBean.class);
若要测试它能否正确序列化,请执行以下操作。
https://stackoverflow.com/questions/18855463
复制相似问题