从 RetroFit 库返回的 LinkedTreeMap 对象的问题

Issues with LinkedTreeMap object returned from RetroFit library

当我尝试使用 reviewdata.result.get("results") 访问结果时,它需要一个对象并且不会让我遍历结果 =( !我正在寻找一种获取结果节点的方法进入我可以使用的结构。感谢任何帮助。

0 = {LinkedTreeMap$Node@3888} "page" -> "1.0"
1 = {LinkedTreeMap$Node@3889} "results" -> " size = 2"
2 = {LinkedTreeMap$Node@3890} "total_pages" -> "1.0"
3 = {LinkedTreeMap$Node@3891} "total_results" -> "2.0"  

如果其他人在尝试使用 gson Linked Tree Maps 时遇到此问题,这里是完整的代码 =D!

    LinkedTreeMap treemap = reviewdata.result;
    ArrayList<LinkedTreeMap> subtree = (ArrayList<LinkedTreeMap>) treemap.get("results");
    ArrayList<Review> reviews = new ArrayList<>();

    for(LinkedTreeMap map : subtree){
        Review review = new Review();
        review.setReviewID(map.get("id").toString());
        review.setAuthor(map.get("author").toString());
        review.setContent(map.get("content").toString());
        review.setURL(map.get("url").toString());
        reviews.add(review);
    }

    return  reviews;

这个解决方法对我有用:

Class<M> modelClass;
final List<M> modelList = new ArrayList<>();

@Override
public void success(List<Object> resultList, Response response) {
    modelList.clear();
    for (Object result : resultList) {
        String json = new Gson().toJson(result);
        M model = new Gson().fromJson(json, modelClass);
        modelList.add(model);
    }
    Log.wtf(TAG, "GET Successful");
}