2017-07-04 52 views
0

我正在與retrofit2 在標準JSON響應工作:{URL} /登錄[改造] [Android的用於與標準的Json每個模型解析對象REPONSE

{ 
    "message": "succesfully", 
    "status_code": "100", 
    "data":{ 
    "token":"jiur02Pje9", 
    "username":"usertest", 
    "id":"jlow81" 
    } 
} 

和另一API:

{ 
    "message": "get information succesfully", 
    "status_code": 100, 
    "data": { 
    "username": "usertest02", 
    "phone": "1111111", 
    "image": "http://test/1.jpg", 
    "online_status": 1 
    } 
} 

我創建的文件模型

BaseData.java

String message; 
int statusCode; 
Object data; 

UserInformation.java(字段:用戶名,圖像...)

Authentication.java(字段:令牌,ID,用戶名...)

如何[數據]解析到UserInformation和認證對象

感謝您的閱讀。

+0

您是否嘗試過使用GSON? –

+0

爲什麼不能爲這兩種API創建單獨的模型? –

+0

@ Vlad Matvienko是的,我嘗試使用gson –

回答

0

有很多方法可以做到這一點。

你可以用第三方庫繼續像GSON

你的POJO類,看起來有點像這種情況,使用Android插件或在線JSON來POJO轉換器。

public class Response { 

    @SerializedName("data") 
    private Data mData; 
    @SerializedName("message") 
    private String mMessage; 
    @SerializedName("status_code") 
    private String mStatusCode; 

    public Data getData() { 
     return mData; 
    } 

    public void setData(Data data) { 
     mData = data; 
    } 

    public String getMessage() { 
     return mMessage; 
    } 

    public void setMessage(String message) { 
     mMessage = message; 
    } 

    public String getStatusCode() { 
     return mStatusCode; 
    } 

    public void setStatusCode(String statusCode) { 
     mStatusCode = statusCode; 
    } 

    public class Data { 

     @SerializedName("image") 
     private String mImage; 
     @SerializedName("online_status") 
     private Long mOnlineStatus; 
     @SerializedName("phone") 
     private String mPhone; 
     @SerializedName("username") 
     private String mUsername; 
     @SerializedName("token") 
     private String mToken; 
     @SerializedName("id") 
     private String mId; 
     public String getImage() { 
      return mImage; 
     } 

     public void setImage(String image) { 
      mImage = image; 
     } 

     public Long getOnlineStatus() { 
      return mOnlineStatus; 
     } 

     public void setOnlineStatus(Long onlineStatus) { 
      mOnlineStatus = onlineStatus; 
     } 

     public String getPhone() { 
      return mPhone; 
     } 

     public void setPhone(String phone) { 
      mPhone = phone; 
     } 

     public String getUsername() { 
      return mUsername; 
     } 

     public void setUsername(String username) { 
      mUsername = username; 
     } 

     public String getmToken() { 
      return mToken; 
     } 

     public void setmToken(String mToken) { 
      this.mToken = mToken; 
     } 

     public String getmId() { 
      return mId; 
     } 

     public void setmId(String mId) { 
      this.mId = mId; 
     } 
    } 

} 

我們JSON字符串轉換爲POJO,使用GSON爲 -

Gson gson = new Gson(); 
Response response = gson.fromJson(yourresponseStr.toString(), Response.class); 

您可以使用相同的響應類,或者你可以映射類將採取響應爲PARAM和回報不同POJO的通過用UserInformation.jav一個或映射狀態Authentication.java

這樣代碼更可讀和清潔,並且您僅使用您需要的數據。 另外,如果您需要序列化並傳遞給其他組件,則只會傳遞必需的字段。

+0

謝謝你的回覆。但我認爲它不清楚和堅持。因爲我的項目有20+以上的JSON標準的API。 –

+0

你需要爲每個API綁定一個pojo類。有一個共同的基類。 – Ritesh