【发布时间】:2014-06-27 14:16:54
【问题描述】:
这是我用于反序列化从 Google App Engine Cloud Endpoint 返回的响应的代码:
String jsonString = IOUtils.toString(
httpResponse.getEntity().getContent(), "UTF-8");
ObjectMapper mapper = new ObjectMapper();
ArrayList<myPOJO> myList=
mapper.readValue(jsonString, new TypeReference<ArrayList<MyPOJO>>(){});
jsonString 看起来像这样:
{
"items" : [ {
"id" : "12345",
"name" : "test1"
}, {
"id" : "121212",
"name" : "test2"
} ]
}
但我收到此错误:
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: java.io.StringReader@547a7880; line: 1, column: 1]
使用 Jackson 将此 JSON 反序列化为 POJO 列表的正确方法是什么?
【问题讨论】:
-
你的 jsonString 是一个对象,而不是列表。
-
您可以为此目的使用杰克逊库。
标签: java json google-app-engine jackson google-cloud-endpoints