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更改属性的名称。
有什么建议吗?
制作另一个域对象并分别对待它们,TopObject - > SearchResponse - > Response []和TopObject - > DetailsResponse - > Response。 – yorkw
由于我不能注释类名,我怎样才能分别处理“Response”对象和“Response []”对象数组? – NiTiN
也许你可以粘贴两个响应的JSON源?也请贴上你的对象heirarchy。谢谢 – styler1972