我想从baidu music web api获取信息。我使用下面的拖链: http://openapi.baidu.com/rest/2.0/music/billboard/billlist?page_size=50×tamp=2016-09-22+18%3A47%3A54&sign=b2e34bd4b6c19a065d5a7e49e591a41b&session_key=9mzdDcHtDENrxP3Spvk7ZFbNHNijT8l8fN%2BfI%2Fe3U5rh3U5g%2FDVvjZyqB48aJaYO5qaqw4JbugF79hgAQ%2FGBIixUSuaP&type=21&page_no=1
只有类型不同。一个是23,另一个是21.返回jason:一个是billboard21,另一个是billboard23。如果我想使用retrofit2来访问api并解析返回jason,我应该定义两个不同的java类来处理这两个不同的返回吗?面对大约17种类型,如果不想创建17个java类,我怎么能处理这种情况?
我的访问权限是:
@GET("/rest/2.0/music/billboard/billlist")
Call<BaiduBillListContainer> getBillList(@Query("timestamp") String timestamp,
@Query("type") String type,
@Query("sign") String sign,
@Query("session_key") String sessionkey,
@Query("page_size") String pagesize,
@Query("page_no") String pageno);
BaiduBillListContainer.java定义:
public class BaiduBillListContainer implements Serializable {
BaiduBillList billboard21;
public BaiduBillList getBillBoardInfo() {
return billboard21;
}
public void setBillBoardInfo(BaiduBillList billBoardInfo) {
this.billboard21 = billBoardInfo;
}
}
它不能用于获得billboard23返回。任何人都可以帮我解决这个问题吗?非常感谢。
答案 0 :(得分:0)
试试这个:
public class BaiduBillListContainer implements Serializable {
Map<String,BaiduBillList> billboard;
public Map<String,BaiduBillList> getBillBoardInfo() {
return billboard;
}
public void setBillBoardInfo(Map<String,BaiduBillList> billBoardInfo) {
this.billboard= billBoardInfo;
}
}
然后从地图中调用广告牌,如:
Map<String,BaiduBillList> getBBData=response.body();
BaiduBillList receivedBBList=getBBData.values().toArray()[0]