2011-11-07 80 views
2

由于我对两个不同的Web响应使用了相同的对象结构,因此我面临反序列化的问题。在'搜索'中,我得到了一些对象,而在'细节'中,我只得到一个对象。gson.fromJson - 反序列化失败

查询码:

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); 

从服务我得到的响应与同一对象hireachy TopObject - > SearchResponse - >响应,但在第一种情况下(搜索)我得到Response []的数组,并且在第二种情况下(Details)我得到单个Response对象。

明显地,我的反序列化在第二种情况下失败了,因为代码需要响应数组而不是一个响应。

我意识到我不能改变对象的名称,就像我可以使用注解@SerializedName更改属性的名称。

有什么建议吗?

+0

制作另一个域对象并分别对待它们,TopObject - > SearchResponse - > Response []和TopObject - > DetailsResponse - > Response。 – yorkw

+0

由于我不能注释类名,我怎样才能分别处理“Response”对象和“Response []”对象数组? – NiTiN

+0

也许你可以粘贴两个响应的JSON源?也请贴上你的对象heirarchy。谢谢 – styler1972

回答