如何从 Jackson 中的数组开始反序列化 JSON 文件? [英] How to deserialize JSON file starting with an array in Jackson?

查看:13
本文介绍了如何从 Jackson 中的数组开始反序列化 JSON 文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个看起来像这样的 Json 文件:

<预><代码>[{字段":val"},....]

我有代表单个对象和它们的集合的 Java 对象:

公共类对象{公共集合<列表>我的对象;}

我想使用 ObjectMapper 反序列化 JSON.

ObjectMapper mapper = new ObjectMapper();mapper.readValue(in, Objects.class);

但我明白了:

11-24 23:19:19.828: W/UpdateService(6084): org.codehaus.jackson.map.JsonMappingException:无法从 START_ARRAY 令牌反序列化 com.project.my.Objects 的实例

解决方案

尝试

 mapper.readValue(in, ObjectClass[].class);

ObjectClass 类似于:

 公共类 ObjectClass {字符串字段;公共对象类(){}公共无效集字段(字符串值){this.field = 值;}}

注意:在您发布的 Objects 类中,您声明了一个列表集合(即列表列表),这不是您想要的.您可能想要一个 List.但是,在使用 Jackson 反序列化时只执行 YourObject[].class 简单得多,然后再转换为列表.

I have a Json file that looks like this:

[
    { "field":"val" },
....
]

I have Java object representing single object and collection of them:

public class Objects{

    public Collection<List> myObject;
}

I would like to deserialize JSON using ObjectMapper.

ObjectMapper mapper = new ObjectMapper();
mapper.readValue(in, Objects.class);

But I get:

11-24 23:19:19.828: W/UpdateService(6084): org.codehaus.jackson.map.JsonMappingException: 
Can not deserialize instance of com.project.my.Objects out of START_ARRAY token

解决方案

Try

   mapper.readValue(in, ObjectClass[].class);

Where ObjectClass is something like:

  public class ObjectClass {
    String field;

    public ObjectClass() { }

    public void setField(String value) {
      this.field = value;
    }
  }

Note: in your posted version of the Objects class, you're declaring a Collection of Lists (i.e. a list of lists), which is not what you want. You probably wanted a List<ObjectClass>. However, it's much simpler to just do YourObject[].class when deserializing with Jackson, and then converting into a list afterwards.

这篇关于如何从 Jackson 中的数组开始反序列化 JSON 文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆