繁体   English   中英

如何使用Retrofit解析复杂的JSON并将其放入列表中

[英]How to resolve complex JSON and put it in list into list using Retrofit

我有JSON,如下所示

{
"status" : "succesfull",
"items": [
    {
        "id" : "1",
        "name": "apple",
        "counrty": "USA"
    },
    {
        "id": "2",
        "name": "banana",
        "country": "Jamaica"
    },
    {
        "id":"3",
        "name": "potatoes",
        "counrty": "Belarus"
    },
    ...
   ]
  }

假设国家不尽相同,但我不知道哪个国家会列入清单

我需要列出以下内容:

在此处输入图片说明

任何解决方案将不胜感激

public class Response {
  String status;
  ArrayList<Items> items;      
}



public class Items{
   String id;
   String name;
   String country;
}

您可以通过这种方式进行操作(对不起格式错误)请确保在结构类中添加getter / setter方法。

JSONObject jsonObj = new JSONObject(responseString);
Response response = new Response();

if(jsonObj.has("status")){ 
response.setStatus(jsonObj.getString("status"));
}

if(jsonObj.has("items")) {
 JSONArray array = jsonObj.getJSONArray("items");
 ArrayList<Items> list =new ArrayList();

for(i=0;i<array.length;i++){ 
     JSONObject json = array.get(i); 
     Items item = new Items();
     item.setId(json.getString("id"));
     item.setName(json.getString("name"));
     item.setCountry(json.getString("country"));
     list.add(item);
}
}
response.setItems(list);

大家好,

将您的JSON放入任何JSON解析器,例如此处http://www.jsonschema2pojo.org/
比您需要选择Parcelable / Serializable,您将获得自动生成的POJO类。
与必须使用okHttp / gson设置改造实例相比,创建dao接口,在其中实现您的所有方法以调用JSON。

您的POJO如下所示:

public class Response{
private List<ItemsItem> items;
private String status;

public void setItems(List<ItemsItem> items){
    this.items = items;
}

public List<ItemsItem> getItems(){
    return items;
}

public void setStatus(String status){
    this.status = status;
}

public String getStatus(){
    return status;
}


class ItemsItem{
    private String counrty;
    private String name;
    private String id;
    private String country;

    public void setCounrty(String counrty){
        this.counrty = counrty;
    }

    public String getCounrty(){
        return counrty;
    }

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public void setId(String id){
        this.id = id;
    }

    public String getId(){
        return id;
    }

    public void setCountry(String country){
        this.country = country;
    }

    public String getCountry(){
        return country;
     }

 } }

使用带有TextView和ListView的CustomLayout XML创建一个RecyclerView。

在RecyclerViewAdapter类上,只需设置标题和列表

recyclerView的自定义布局将如下所示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title Goes here" />

   <ListView
        android:layout_width="match_parent"
        android:layout_height="@dimen/_150sdp"/></LinearLayout>

暂无
暂无

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

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