【问题标题】:Parse nested object using GsonConverter with Retrofit2使用带有 Retrofit2 的 GsonConverter 解析嵌套对象
【发布时间】:2016-03-26 14:36:32
【问题描述】:

我正在尝试将下一个 JSON 转换为对象:

{  
   AccountName:"temnoi",
   Parts:{  
      part-0:{  
         Name:"HOME",
         UptimeSeconds:"2143943",

      },
      part-1:{  
         Name:"WORK",
         UptimeSeconds:"2276958",

      }
   }
}

问题是 Parts 不是一个数组,所以我不知道如何 以 List 或任何其他数据结构的形式获取它们。

现在我有这样的 DTO 类

public class Info {
    private String AccountName;
    private List<Parts> Parts;
}

但显然程序崩溃,因为没有数组。我将 Retrofit2 与 GsonConverter 一起使用。

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

【问题讨论】:

    标签: android json retrofit2 gson


    【解决方案1】:

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

    我用 OkHTTP 和 Gson 替换了 Retrofit2,并使用了内置的 JSON 解析器。

    收到 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... 转换为我需要的对象的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多