2016-09-29 11 views
0

私はRxandroidで作業しています。arraynameの動的キーを使用してpojoクラスを作成する方法

{ 
    "2016-10-02": [ 
    { 
     "name": "foo", 
     "id": "1", 
     "category": "bar" 

    }, 
    { 
    "name": "foo", 
     "id": "2", 
     "category": "bar" 
    }, 
    { 
    "name": "foo", 
     "id": "3", 
     "category": "bar" 
    }, 
    { 
     "name": "foo", 
     "id": "4", 
     "category": "bar" 
    } 
    ], 
    "2016-10-01": [ 
    { 
     "name": "foo", 
     "id": "5", 
     "category": "bar" 
    }, 
    { 
     "name": "foo", 
     "id": "6", 
     "category": "bar" 
    }, 
    ], 
"2016-10-03": [ 
    { 
     "name": "foo", 
     "id": "5", 
     "category": "bar" 
    } 
    ] 
} 

アレイの日付キー名が自動的に変更され、配列の番号が変更されます。この例では、日付キーを持つ3つの配列があります。しかし、これらのアレイの数は様々です。

私はさまざまなリンクをstackoverflowで使用していますが、問題を解決できませんでした。

+0

2通りの方法があります。独自のデシリアライザを実装するか、JsonObject(GSONライブラリ)をレスポンスとして使用し、そのオブジェクトから内部配列を取得するようにRetrofitに指示します。 – toshkinl

+0

[この回答を確認](http://stackoverflow.com/questions/7304002/how-to-parse-a-dynamic-json-key-in-a-nested-json-result) –

+0

@Suresh Basnet:あなたのjsonレスポンスを完全に解析して答えを以下に示します – Jai

答えて

0

使用JSONObjectキー()キーを取得するために、次にあなたが動的な値を取得するために、各キーを反復処理することができます:私の視点から

JSONObject object = new JSONObject("your response string") 
    Iterator keys = object.keys(); 

    //Let's consider your POJO class is CategoryClass 
    // Let's take HashMap to store your POJO class for specific KEY 
    HashMap<String, ArrayList<CategoryClass>> mMap = new HashMap<String, ArrayList<CategoryClass>>(); 

    while(keys.hasNext()) { 
     // here you will get dynamic keys 
     String dynamicKey = (String)keys.next(); 

     // get the value of the dynamic key 
     JSONArray dynamicValue = object.getJSONArray(currentDynamicKey); 

     //Let's store into POJO Class and Prepare HashMap. 
     ArrayList<CategoryClass> mCategoryList = new ArrayList<CategoryClass>(); 
     for(int i = 0 ; i < dynamicValue.length(); i++){ 

      CategoryClass mCategory = new CategoryClass(); 
      mCategory.setName(dynamicValue.getString("name")); 
      mCategory.setId(dynamicValue.getString("id")); 
      mCategory.setCategory(dynamicValue.getString("category")); 

      mCategoryList.add(mCategory); 


     } 
     //Add Into Hashmap 
     mMap.put(dynamicKey, mCategoryList); 

    } 
1

を、このフォーマットはrecommended.The dateない値でなければなりません例えばjson keyの代わりに"date":"2016-10-01"のように。

+0

これは実際には質問に対する回答ではありませんが、それは有効なポイントです!キーは動的であってはならない – WarrenFaith

関連する問題