我想从百度音乐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如何处理不同的json结果
唯一的类型是不同的。一个是23,另一个是21.对于归来贾森:一个是广告牌21,另一个是广告牌23。如果我想使用retrofit2来访问api并解析返回jason,我应该定义两个不同的java类来处理这两个不同的返回吗?面对大约有17种类型,如果不想创建17个java类,我该如何处理这种情况?
我访问API是:
@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回报。任何人都可以帮助我解决这个问题?非常感谢。
难道你创建的本地数据库的呢?如果是,您可以创建一个主表和不同的子表。主表包含所有信息。子表包含它们的唯一标识和类型。所以你必须为所有的细节和17个子类创建unique_id和类型 –
你必须声明不同的java类来解析不同的json键 –
你可以接收jsonObject(使用retrofit)并动态地将其转换为数组从它得到jsonArray后pojo的。你可以检出这个答案(http://stackoverflow.com/questions/24279245/how-to-handle-dynamic-json-in-retrofit#answer-28576252) –