私はbaidu音楽の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の結果を扱う方法
唯一のタイプが異なっています。 1つは23、もう1つは21です。return jasonの場合:1つはbillboard21、もう1つはbillboard23です。私がretrofit2を使用してAPIにアクセスし、return jasonを解析する場合は、この2つの異なる戻り値をハンドリングするために2つの異なるJavaクラスを定義する必要がありますか? 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リターンを得るために使用することはできません。誰でもこの質問について私を助けることができますか?どうもありがとう。
:
は次にようにマップから看板を呼びますか?はいの場合、1つのメインテーブルと異なるサブテーブルを作成できます。メインテーブルすべての情報が含まれます。サブテーブルには一意のIDとタイプが含まれています。したがって、すべてのディテールに対して1つのクラスとunique_idを持つ17のサブクラスを作成し、タイプを –
にする必要があります。別のjsonキーを解析するには、別のJavaクラスを宣言する必要があります。 –
jsonObject(retrofitを使用)を受け取って、それからjsonArrayを取得した後のpojoのこの回答をチェックアウトすることができます(http://stackoverflow.com/questions/24279245/how-to-handle-dynamic-json-in-retrofit#answer-28576252) –