繁体   English   中英

使用带有Retrofit2的GsonConverter解析嵌套对象

[英]Parse nested object using GsonConverter with Retrofit2

我正在尝试将下一个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一起使用。

任何人都可以提出解决该问题的建议吗?

不幸的是,由于我没有很多时间,所以我提出了下一个解决方案。

我用内置的JSON解析器替换OkHTTP和Gson的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 ...转换为我需要的对象的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM