我正在尝试将下一个JSON转换为对象:
{
AccountName:"temnoi",
Parts:{
part-0:{
Name:"HOME",
UptimeSeconds:"2143943",
},
part-1:{
Name:"WORK",
UptimeSeconds:"2276958",
}
}
}
问题是部件不是数组,所以我不知道如何 将它们作为List或任何其他数据结构获取。
现在我有这样的DTO课程
public class Info {
private String AccountName;
private List<Parts> Parts;
}
但显然程序崩溃,因为没有数组。我使用Retrofit2和GsonConverter。
有人可以建议解决这个问题吗?
答案 0 :(得分:0)
不幸的是,因为我没有很多时间,所以我选择了下一个解决方案。
我用OkHTTP和Gson用内置的JSON解析器替换Retrofit2。
使用OkHttpClient获得响应后,我手动将JSON转换为我的对象。
JSONObject root = new JSONObject(responseFromServer);
JSONObject parts = root.getJSONObject("Parts");
Iterator<String> jsonPartsIterator = parts.keys();
List<Part> partsList = new ArrayList<>();
while (jsonPartsIterator.hasNext()) {
try{
String key = jsonRootIterator.next();
partsList.add(convertPartJsonToObject(computers.getJSONObject(key)));
} catch(Exception e){
// in case if there will be number '0' return empty List
}
}
这里 Part convertPartJsonToObject(JSONObject object)是将part-0,part-1 ...转换为我需要的对象的方法。