如何使用 Retrofit 处理 Flat JSON 字典
How do I handle a Flat JSON Dictionary with Retrofit
我的 Web 服务 returns 一个 json 字典,表示多个范围对象的 ID 和名称。
{
"1": "Range 1",
"2": "Range 2",
"3": "Range 3"
}
我正在对 gson 进行改造,并希望响应是一个 Range 对象数组。
public class Range {
public Integer persistentId;
public String name;
}
如何设置我的响应 class 来处理这个问题?
public interface ContentService {
@GET("/apiv2/release_range_data.json")
Call<RangeResponse> getRanges();
}
public class RangeResponse {
public ArrayList<Range> ranges;
}
我需要自定义解串器来处理这个吗?
如何 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;
}
}
我的 Web 服务 returns 一个 json 字典,表示多个范围对象的 ID 和名称。
{
"1": "Range 1",
"2": "Range 2",
"3": "Range 3"
}
我正在对 gson 进行改造,并希望响应是一个 Range 对象数组。
public class Range {
public Integer persistentId;
public String name;
}
如何设置我的响应 class 来处理这个问题?
public interface ContentService {
@GET("/apiv2/release_range_data.json")
Call<RangeResponse> getRanges();
}
public class RangeResponse {
public ArrayList<Range> ranges;
}
我需要自定义解串器来处理这个吗?
如何 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;
}
}