我刚刚开始android程序编写和发现很好的教程通过使用imdb api。而不是在本教程中使用XML,我想使用JSON和收到的JSON我有一个问题。 这是person.json:嵌套JSON解析与杰克逊安卓android
[
{
"score":1,
"popularity":3,
"name":"Brad Pitt",
"id":287,
"biography":"test",
"url":"http://www.themoviedb.org/person/287",
"profile":[
{
"image":{
"type":"profile",
"size":"thumb",
"height":68,
"width":45,
"url":"http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w45/w8zJQuN7tzlm6FY9mfGKihxp3Cb.jpg",
"id":"4ea5cb8c2c0588394800006f"
}
},
{
"image":{
"type":"profile",
"size":"profile",
"height":281,
"width":185,
"url":"http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w185/w8zJQuN7tzlm6FY9mfGKihxp3Cb.jpg",
"id":"4ea5cb8c2c0588394800006f"
}
},
{
"image":{
"type":"profile",
"size":"h632",
"height":632,
"width":416,
"url":"http://d3gtl9l2a4fn1j.cloudfront.net/t/p/h632/w8zJQuN7tzlm6FY9mfGKihxp3Cb.jpg",
"id":"4ea5cb8c2c0588394800006f"
}
},
{
"image":{
"type":"profile",
"size":"original",
"height":1969,
"width":1295,
"url":"http://d3gtl9l2a4fn1j.cloudfront.net/t/p/original/w8zJQuN7tzlm6FY9mfGKihxp3Cb.jpg",
"id":"4ea5cb8c2c0588394800006f"
}
}
],
"version":685,
"last_modified_at":"2013-02-16 07:11:15 UTC"
}
]
我的两个对象为它们:
public class Person implements Serializable {
private static final long serialVersionUID = 6794898677027141412L;
public String score;
public String popularity;
public String name;
public String id;
public String biography;
public String url;
public String version;
public String lastModifiedAt;
public Profile profile;
}
public class Profile implements Serializable {
private static final long serialVersionUID = -8735669377345509929L;
public ArrayList<Image> imagesList;
}
public class Image implements Serializable {
private static final long serialVersionUID = -2428562977284114465L;
public String type;
public String url;
public String size;
public int width;
public int height;
}
我不能想出如何利用杰克逊对象映射检索人名单。 当我使用这一个:
ObjectMapper mapper = new ObjectMapper();
Person person= mapper.readValue(jsonResponseString, Person.class);
我得到:
02-16 18:34:48.010:W/System.err的(376):com.fasterxml.jackson.databind.JsonMappingException:能不反序列化com.example.imdbsearcher.model.Person的实例超出START_ARRAY令牌 02-16 18:34:48.180:W/System.err(376):at [Source:[email protected]; line:1,column:1] 02-16 18:34:48.554:W/System.err(376):at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:599) 02-16 18:34:48.830:W/System.err(376):at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:593)
我已经改变了检索方法的建议基思和crdnilfan 。 但现在我有配置文件的属性问题。
我意识到我错过了一个人对象,基本上我创建了新的配置文件对象,并将imageList移动到这个类。
我已经更新了POJO的如上。
但现在我得到的配置文件相同的错误。
无法反序列化com.example.imdbsearcher.model.Profile的情况下进行START_ARRAY令牌
邮报满请跟踪stacktrace。 – nhaarman 2013-02-16 18:25:14
我已经添加了该类的修改版本到我的回答 – 2013-02-16 21:18:34