如何从杰克逊的数组开始反序列化JSON文件?

pix*_*xel 18 json jackson

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

[
    { "field":"val" },
....
]
Run Code Online (Sandbox Code Playgroud)

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

public class Objects{

    public Collection<List> myObject;
}
Run Code Online (Sandbox Code Playgroud)

我想使用反序列化JSON ObjectMapper.

ObjectMapper mapper = new ObjectMapper();
mapper.readValue(in, Objects.class);
Run Code Online (Sandbox Code Playgroud)

但我得到:

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
Run Code Online (Sandbox Code Playgroud)

dmo*_*mon 25

尝试

   mapper.readValue(in, ObjectClass[].class);
Run Code Online (Sandbox Code Playgroud)

ObjectClass是这样的:

  public class ObjectClass {
    String field;

    public ObjectClass() { }

    public void setField(String value) {
      this.field = value;
    }
  }
Run Code Online (Sandbox Code Playgroud)

注意:在您发布的Objects课程版本中,您将声明一个列表集合(即列表列表),这不是您想要的.你可能想要一个List<ObjectClass>.然而,YourObject[].class在与杰克逊进行反序列化之后,以及随后转换为列表时,这样做要简单得多.


Han*_* He 6

您可以通过以下方式直接获取列表:

List<ObjectClass> objs =  
    mapper.readValue(in, new TypeReference<List<ObjectClass>>() {});
Run Code Online (Sandbox Code Playgroud)