在Java

时间:2016-08-02 07:53:42

标签: java json rest gson

我是新手,并试图在Android Studio的setlist.fm上使用Rest API,但在将我的GET请求结果放入我的Java数据模型时遇到了一些问题。 特别是,我已经建模了#34;套" (" set"指在音乐会上演奏的一组)作为Java类。但通常情况下,我从我的HTTP请求中得到结果,这些请求包含" set"作为空字符串甚至数组。

我将对以下所有Radiohead设置列表的GET请求使用此示例: http://api.setlist.fm/rest/0.1/artist/a74b1b7f-71a5-4011-9441-d0b5e4122711/setlists.json

请注意,在大多数情况下,"设置"是一个对象。但在某些情况下,它是 String 。在其他情况下,它是数组

当我尝试使用以下代码行将Gson的json解析为我的数据模型时,我的Android Studio给出了以下错误:

 gson.fromJson(result.toString(),Response.class);

在"设置"的实例上似乎失败了。显示为空字符串而不是对象:

Expected BEGIN_OBJECT but was STRING at line 1 column 942 path $.setlists.setlist[0].sets

有没有人有关于如何处理此类事情的建议?我已经注意到了迄今为​​止我所有的艺术家。 谢谢!

2 个答案:

答案 0 :(得分:2)

假设@SerializedName("setlist") private List<MyItem> setlist; 是你编写的一个包含json主要字段的类,并且在它的某个点上你有:

MyItem

我还假设您的@SerializedName("sets") private List<MySet> sets; 类包含字段:

Gson

如果你让MyItem解析它,它会在找到一个字符串而不是MySet对象的列表( - &gt;数组)时失败。

但您setTimeout()可以write a custom TypeAdapter

有很多关于如何编写Gson TypeAdapter的文档,请查找它。

答案 1 :(得分:0)

使用relu运算符确定类型并进行相应的转换。

instanceOf