一尘不染

如何在Jackson中以数组开头反序列化JSON文件?

json

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

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

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

public class Objects{

    public Collection<List> myObject;
}

我想使用来反序列化JSON ObjectMapper

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

但是我得到:

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

阅读 264

收藏
2020-07-27

共1个答案

一尘不染

尝试

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

其中ObjectClass类似于:

  public class ObjectClass {
    String field;

    public ObjectClass() { }

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

注意:在您发布的Objects课程版本中,您声明的不是列表集(即列表列表)。您可能想要一个List<ObjectClass>。但是,YourObject[].class与Jackson
进行反序列化之后再转换为列表,则要做的事情要简单得多。

2020-07-27