gson.fromJson - 反序列化失败

时间:2011-11-07 17:22:50

标签: android gson

我遇到了反序列化的问题,因为我对两个不同的web响应使用相同的对象结构。在'search'中,我获得了一个对象数组,在'details'中我得到了一个对象。

搜索代码:

InputStream source = Helper.retrieveStream("http://<domainname>/search.jsp?action=search&q=" + query);
Reader reader = new InputStreamReader(source);
Gson gson = new Gson();
SearchObj searchResponse = gson.fromJson(reader, SearchObj.class); 

详情代码:

InputStream source = Helper.retrieveStream("http://<domainname>/search.jsp?action=detail&id=" + id);

从服务中我得到同样的对象的回应 TopObject - &gt; SearchResponse - &gt;响应,但在第一种情况下(搜索)我得到Response []数组,在第二种情况下(详细信息)我得到单个Response对象。

很明显,我的反序列化在第二种情况下失败,因为代码期望响应数组而不是只有一个响应。

我意识到我无法更改对象的名称,就像我可以使用注释@SerializedName更改属性的名称。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用Gson来反序列化有时是数组的JSON,有时候是对象需要自定义反序列化。先前的StackOverflow线程已涵盖此特定问题,例如Parsing JSON with GSON, object sometimes contains list sometimes contains object