2017-08-11 54 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()+「」); } –