2017-07-04 50 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