如何从Jackson中的数组开始反序列化JSON文件?
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情

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

#0

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.

#1

You can directly get a list through the following way:

List<ObjectClass> objs =  
    mapper.readValue(in, new TypeReference<List<ObjectClass>>() {});

#2

Passing an array or List type works, as @dmon answered.

For sake of completeness, there is also an incremental approach if you wanted to read contents one-by-one:

Iterator<Objects> it = mapper.reader(Objects.class).readValues(in);
while (it.hasNext()) {
  Objects next = it.next();
  // ... process it
}

This is useful if you have huge lists or sequences of objects; either with enclosing JSON Array, or just root-level values separated by spaces or linefeeds.

推荐文章

从xml填充gridview

从xml填充gridview

推荐文章

IE中不同的拆分正则表达式结果

IE中不同的拆分正则表达式结果

推荐文章

使用有关扩展项的重定义列表中缺少对象引用

使用有关扩展项的重定义列表中缺少对象引用

推荐文章

使用C#中的图像。调整Gif大小并将其保存为JPEG

使用C#中的图像。调整Gif大小并将其保存为JPEG

推荐文章

应用内计费安全和设计问题

应用内计费安全和设计问题

推荐文章

更改请求的WebResource.axd的url

更改请求的WebResource.axd的url

推荐文章

在委托声明中“T@this”是什么意思?

在委托声明中“T@this”是什么意思?

推荐文章

什么是命名空间与类名冲突问题的优雅解决方案?

什么是命名空间与类名冲突问题的优雅解决方案?

推荐文章

问题:ASP.NET无法识别外部脚本

问题:ASP.NET无法识别外部脚本

推荐文章

jquery向下滚动时固定div

jquery向下滚动时固定div

推荐文章

当存在触发器时,LINQ to SQL无法更新

当存在触发器时,LINQ to SQL无法更新

推荐文章

获取要用作ReturnUrl的完整URL和散列

获取要用作ReturnUrl的完整URL和散列

推荐文章

代码中的宏效果

代码中的宏效果

推荐文章

在Blend 4中构建不带Visual Studio 2010的C解决方案(包括单元测试)

在Blend 4中构建不带Visual Studio 2010的C解决方案(包括单元测试)

推荐文章

工艺堆栈布局

工艺堆栈布局

推荐文章

php中与数组相关的基本函数是什么?

php中与数组相关的基本函数是什么?