我将 2D 数组 JSON 传递给 spring Controller ,但出现 jackson 错误。
org.codehaus.jackson.map.JsonMappingException:
Can not deserialize instance of java.lang.String[] out of VALUE_NUMBER_INT token
我的 javascript 二维数组如下所示。
[ ["John", "Doe", "worker", "fulltime"],
["Adam", "Smith", "nonworker", "temp"],
["Jane", "Doe", "worker", "fulltime"] ]
bean 类像这样映射到 2D 数组。
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;
}
}
在 Spring Controller 中,我正在使用类似的东西。
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);
}
}
任何人都可以建议我如何解决这个问题。
最佳答案
您确定您的数组是矩形尺寸吗?
您应该能够使用列表来执行此操作:
List<List<String>> workInfo;
然后根据需要转换为 String[][]
。
你可以这样做:
ObjectMapper mapper = new ObjectMapper();
mapper.canSerialize(MyBean.class);
测试它是否可以正确序列化。
关于java - 如何使用 Jackson 反序列化 2D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855463/