java - 如何使用 Jackson 反序列化 2D 数组

标签 java arrays json spring spring-mvc

我将 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/

相关文章:

java - 使用 Play 的 Selenium 标签验证名称中包含点 (.) 的元素

java - 如何从 Controller 访问 REST API 的所有可用路由?

ruby-on-rails - 在创建用户帐户时自定义设计用户 JSON 响应

java - 用集合转换集合

java - Android SOAP wsdl

java - 在 TextArea 上 setEnable 后,Wicket 文本输入消失

javascript - Chart.js/Google 图表和 JSON

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

c++ - 对数组中的字符串进行冒泡排序

javascript - 存储字母表中每个字母在字符串中所需位置出现的次数