[英]How to parse list of JSON objects surrounded by [] using Retrofit and GSON?
[英]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.