2016-05-12 3 views
0

Моя веб-служба возвращает словарь json, который представляет идентификатор и имя нескольких объектов диапазона.Как обрабатывать плоский словарь JSON с дооснащением

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

Я использую модификацию с помощью gson и хотел бы, чтобы ответ был массивом объектов 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

Смежные вопросы