2016-05-12 5 views
0

私のWebサービスは、複数の範囲オブジェクトのIDと名前を表すjsonディクショナリを返します。レトロフィットを使用したフラットJSONディクショナリの処理方法

{ 
    "1": "Range 1", 
    "2": "Range 2", 
    "3": "Range 3" 
} 

私はgsonでretrofitを使用しており、レスポンスをRangeオブジェクトの配列にしたいと考えています。

public class Range { 
    public Integer persistentId; 
    public String name; 
} 

これを処理するためにレスポンスクラスを設定するにはどうすればよいですか?

public interface ContentService { 
    @GET("/apiv2/release_range_data.json") 
    Call<RangeResponse> getRanges(); 
} 

public class RangeResponse { 
    public ArrayList<Range> ranges; 
} 

これを処理するにはカスタムデシリアライザが必要ですか?

答えて

1

Map<String, String>を入力してRangeのリストに変換しますか?

UPD

public class Range { 
    public Integer persistentId; 
    public String name; 
} 

public interface ContentService { 
    @GET("/apiv2/release_range_data.json") 
    Call<RangeResponse> getRanges(); 
} 

public class RangeResponse { 
    public Map<String, String> ranges; 

    public ArrayList<Range> getRanges() { 
     ArrayList<Range> result = new ArrayList<>(ranges.size()); 
     for(String id : ranges.keySet()) { 
      Range range = new Range(); 
      range.persistentId = Integer.parseInt(id); 
      range.name = ranges.get(id); 
      result.add(range); 
     } 
     return result; 
    } 
} 
+0

あなたはこれを実現する方法の例を提供することはできますか? – Hackmodford

+0

私の答えは例 –

+0

で更新されました。しかし何らかの理由で、私のマップはnullです。 – Hackmodford

関連する問題