微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从START_ARRAY令牌中反序列化对象实例-JAVA

如何解决com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从START_ARRAY令牌中反序列化对象实例-JAVA

获取MismatchedInputException。在这里搜索了很多问题,但尚未找到解决方案。

代码

import /path/to/file/Bars;
List<Bars> barResults = null;
public boolean validateData() throws IOException {
        boolean flag = false;
        try {
            if (Data.read() != -1) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(Data));
                String line;
                while ((line = reader.readLine()) != null) {
                    line = "[{" + line;
                    System.out.println(line);
                    ObjectMapper om = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNowN_PROPERTIES,false);
                    Bars ms = om.readValue(line,Bars.class);
                    System.out.println(ms);
                    break;
                }
                reader.close();
            }
        } catch (IOException e) {
            e.printstacktrace();
        }
        return flag;
    }

Json://例如,缩短

[{"createdOn":1601058721310,"lastUpdated":null,"lastUpdatedBy":null,"createdBy":null,"appId":null,"logical":"N","calculationDateTime":1601058721310,"mtaVersionNumber":null,"storageRegionName":"texas","createdOnDate":1601058721310,"lastUpdatedDate":0}]

输出

[{"createdOn":1601058721310,"lastUpdatedDate":0}]
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `object` out of START_ARRAY token
 at [Source: (StringReader); line: 1,column: 1]

我不确定导致此异常的原因。启动应用程序时,我运行并读取JSON很好。但是抛出异常。

解决方法

在调用readValue时,您要传递Bars.class作为第二个参数,这告诉杰克逊第一个参数(line)是Bars的JSON表示形式实例,这就是它应该返回的内容。

JSON对象以{开头,并且由于您已要求Jackson对该对象反序列化,因此它希望输入以{开头。但是,您传入的JSON line不是Bars实例:它是一个包含Bars实例的数组,并且以[开头。

因此它抛出一条错误消息,提示“有人告诉我对象在这里,但我却找到了数组的开头”。

要解决此问题,您可以要求Jackson通过将readValue的第二个参数更改为Bars[].class来反序列化“ Bar”对象的数组,然后从该数组中提取bar实例,或者可以停止在行的开头添加“ [”,并在行的末尾切掉“]”,以便它只是一个对象,而不是包含该对象的数组。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。