我是新手,并试图在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
有没有人有关于如何处理此类事情的建议?我已经注意到了迄今为止我所有的艺术家。 谢谢!
答案 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