2017-08-11 52 views
0

我使用http://www.jsonschema2pojo.org/产生我的POJO,现在我想分析我的JSONResponse这是形式的解析JSONArray:如何利用改造

[ 
    { 
    "id":1, 
    "name":"xyz", 
    "rxg":5, 
    "img":"xyz.jpg" 
    }, 
{ 
    "id":2, 
    "name":"abc", 
    "rxg":9, 
    "img":"abc.jpg" 
    }, 
{ }, 
{ } 

而这正是我对如何进行一无所知:

Call<List<MyList>> call = apiInterface.doGetListResources(); 
    call.enqueue(new Callback<List<MyList>>() { 
     @Override 
     public void onResponse(Call<List<MyList>> call, 
Response<List<MyList>> response) { 
       // How to proceed ahead? I'm completely stuck here 

     } 

这是我的模型类:

公共类MYLIST实现Parcelable {

@SerializedName("id") 
@Expose 
public int id; 
@SerializedName("name") 
@Expose 
public String name; 
@SerializedName("rxg") 
@Expose 
public int rxg; 
@SerializedName("image") 
@Expose 
public String img; 

public final static Parcelable.Creator<MyList> CREATOR = new Creator<MyList>() { 

    @SuppressWarnings({ 
      "unchecked" 
    }) 
    public MyList createFromParcel(Parcel in) { 
     MyList instance = new MyList(); 
     instance.id = ((int) in.readValue((int.class.getClassLoader()))); 
     instance.name = ((String) in.readValue((String.class.getClassLoader()))); 
     instance.rxg = ((int) in.readValue((int.class.getClassLoader()))); 
     instance.img = ((String) in.readValue((String.class.getClassLoader()))); 
     return instance; 
    } 

    public MyList[] newArray(int size) { 
     return (new MyList[size]); 
    } 

}; 

/** 
* No args constructor for use in serialization 
*/ 
public MyList() { 
} 

/** 
* @param id 
* @param rxg 
* @param name 
* @param img 
*/ 
public MyList(int id, String name, int rxg, String img) { 
    super(); 
    this.id = id; 
    this.name = name; 
    this.rxg = rxg; 
    this.img = img; 
} 

public int getId() { 
    return id; 
} 

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

public String getName() { 
    return name; 
} 

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

public int getRxg() { 
    return rxg; 
} 

public void setRxg(int rxg) { 
    this.rxg = rxg; 
} 

public String getImg() { 
    return img; 
} 

public void setImg(String img) { 
    this.img = img; 
} 

public void writeToParcel(Parcel dest, int flags) { 
    dest.writeValue(id); 
    dest.writeValue(name); 
    dest.writeValue(rxg); 
    dest.writeValue(img); 
} 

public int describeContents() { 
    return 0; 
    } 
} 

这是我第一次尝试改造,所以请耐心等待。并且非常感谢您的帮助。我试图在这里看到类似的问题:https://stackoverflow.com/a/39774297/5770629但无法进一步的步骤。

回答

0

首先,你应该检查响应是否成功。

如果成功,那么你的身体就是你正在寻找的数据(只要你有正确的形成POJO类)

否则观察错误,并采取相应的行动。

Call<List<MyList>> call = apiInterface.doGetListResources(); 

call.enqueue(new Callback<List<MyList>>() { 
    @Override 
    public void onResponse(Call<List<MyList>> call, 
              Response<List<MyList>> response) { 
      if(response.isSuccessful(){ 
       List<MyList> list = response.body(); 
      } 
      else{ 
       //throw response.errorbody message to user 
      } 

    } 
+0

响应成功但我无法获取数据。原因是我对如何在这里循环无能为力。当使用getters获取数据时,我什么也得不到。 –

+0

所以你的意思是根据我提到的代码,如果你只是记录list.size()你得到0,或者你是否尝试过在成功的场景中记录response.body.string()? –

+0

现在我得到这个在logcat的: d/OkHttp:ETag的: “f6560d9c0785104d09908d052635b92c” 我已经试过: 如果(response.isSuccessful()){ 名单< MyList > myList中= response.body(); Log.v(“my_tag”,myList.toString()); Log.v(“my_tag”,“size is:”+ list.size()); (MyList myList:list) { String name = myList.getName(); Log.d(“my_tag”,“”+“”+ name.toString()); } } else { } Log.d(“my_tag”,response.code()+“”); } –