首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过google-api-client从数组开始反序列化json

如何通过google-api-client从数组开始反序列化json
EN

Stack Overflow用户
提问于 2012-01-22 02:20:49
回答 1查看 991关注 0票数 1

How to deserialize JSON file starting with an array in Jackson?非常相似,我有一个JSON REST回复,如下所示

代码语言:javascript
复制
[
  {
    something
  },
  {
    something
  },
  ...
]

问题是数组是顶层的。我尝试调用com.google.api.client.http.json.JsonHttpParser,如下所示:

代码语言:javascript
复制
Something[] result = jsonParser.parse(response, Something[].class); //array cannot be instantiated: java.lang.IllegalArgumentException: unable to create new instance of class [L...; because it is an array

List<Something> result = jsonParser.parse(response, List.class); //interface cannot be instantiated: java.lang.IllegalArgumentException: unable to create new instance of class java.util.List because it is an interface and because it has no accessible default constructor

ArrayList<Something> result = jsonParser.parse(response, ArrayList.class); //throws IllegalArgumentException: START_ARRAY

其中Something是我的模型类,它应该允许对元素进行反序列化。这些替代方案都不起作用。最后一个的堆栈跟踪是:

代码语言:javascript
复制
01-21 18:44:15.649: E/AndroidRuntime(3117): Caused by: java.lang.IllegalArgumentException: START_ARRAY
01-21 18:44:15.649: E/AndroidRuntime(3117):     at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
01-21 18:44:15.649: E/AndroidRuntime(3117):     at com.google.api.client.json.JsonParser.startParsingObject(JsonParser.java:161)
01-21 18:44:15.649: E/AndroidRuntime(3117):     at com.google.api.client.json.JsonParser.parse(JsonParser.java:233)
01-21 18:44:15.649: E/AndroidRuntime(3117):     at com.google.api.client.json.JsonParser.parse(JsonParser.java:224)
01-21 18:44:15.649: E/AndroidRuntime(3117):     at com.google.api.client.json.JsonParser.parseAndClose(JsonParser.java:180)
01-21 18:44:15.649: E/AndroidRuntime(3117):     at com.google.api.client.json.JsonParser.parseAndClose(JsonParser.java:120)
01-21 18:44:15.649: E/AndroidRuntime(3117):     at com.google.api.client.http.json.JsonHttpParser.parse(JsonHttpParser.java:62)

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-22 08:24:18

在这方面,google-api-client 1.4.1类似乎只依赖于创建新的实例,并且只使用START_OBJECT,而不是START_ARRAY,这意味着它们不支持顶层数组。

我无法解决这个问题,我通过将所有内容更新到google-api-client 1.6.0来解决这个问题,这是一个相当大的更新和重构工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8955450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档