2016-09-27 12 views
0

私はbaidu音楽のWeb APIから情報を取得したいと思います。私は牽引リンクの下に使用します。 http://openapi.baidu.com/rest/2.0/music/billboard/billlist?page_size=50&timestamp=2016-09-22+18%3A47%3A54&sign=b2e34bd4b6c19a065d5a7e49e591a41b&session_key=9mzdDcHtDENrxP3Spvk7ZFbNHNijT8l8fN%2BfI%2Fe3U5rh3U5g%2FDVvjZyqB48aJaYO5qaqw4JbugF79hgAQ%2FGBIixUSuaP&type=21&page_no=1異なるjsonの結果を扱う方法

http://openapi.baidu.com/rest/2.0/music/billboard/billlist?page_size=50&timestamp=2016-09-26+17%3A42%3A18&sign=62cc904c8ff2817280f699a4bd4b6496&session_key=9mzdDcHtDENrxP3Spvk7ZFbNHNijT8l8fN%2BfI%2Fe3U5rh3U5g%2FDVvjZyqB48aJaYO5qaqw4JbugF79hgAQ%2FGBIixUSuaP&type=23&page_no=1

唯一のタイプが異なっています。 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リターンを得るために使用することはできません。誰でもこの質問について私を助けることができますか?どうもありがとう。

+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; } } 

は次にようにマップから看板を呼びますか?はいの場合、1つのメインテーブルと異なるサブテーブルを作成できます。メインテーブルすべての情報が含まれます。サブテーブルには一意のIDとタイプが含まれています。したがって、すべてのディテールに対して1つのクラスとunique_idを持つ17のサブクラスを作成し、タイプを –

+0

にする必要があります。別のjsonキーを解析するには、別のJavaクラスを宣言する必要があります。 –

+0

jsonObject(retrofitを使用)を受け取って、それからjsonArrayを取得した後のpojoのこの回答をチェックアウトすることができます(http://stackoverflow.com/questions/24279245/how-to-handle-dynamic-json-in-retrofit#answer-28576252) –

答えて

0

これを試してください:あなたは、このためのローカルDBを作成しました

Map<String,BaiduBillList> getBBData=response.body(); 

BaiduBillList receivedBBList=getBBData.values().toArray()[0]