如何从杰克逊的数组开始反序列化JSON文件? [英] How to deserialize JSON file starting with an array in Jackson?
问题描述
我有一个类似于这样的Json文件:
I have a Json file that looks like this:
[
{ "field":"val" },
....
]
我有Java对象代表单个对象和它们的集合:
I have Java object representing single object and collection of them:
public class Objects{
public Collection<List> myObject;
}
我想使用 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:
Can not deserialize instance of com.project.my.Objects out of START_ARRAY token
推荐答案
尝试
mapper.readValue(in, ObjectClass[].class);
其中ObjectClass类似于:
Where ObjectClass is something like:
public class ObjectClass {
String field;
public ObjectClass() { }
public void setField(String value) {
this.field = value;
}
}
注意:在您发布的<$ c版本中$ c>对象类,您正在声明列表集合(即列表列表),这不是您想要的。你可能想要一个 List< ObjectClass>
。但是,在使用Jackson进行反序列化时,只需执行 YourObject []。class
,然后转换为列表就更简单了。
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.
这篇关于如何从杰克逊的数组开始反序列化JSON文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!