[Retrofit] [Android]使用标准Json响应的每个模型的Parse Object

时间:2017-07-04 07:12:30

标签: android retrofit2

我正在使用retrofit2 在标准的json响应中:{url} / login

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

和另一个api:

String message;
int statusCode;
Object data;

我创建文件模型

BaseData.java

FileExtensionFilter

UserInformation.java(字段:用户名,图片...)

Authentication.java(字段:标记,标识,用户名...)

如何将[数据]解析为UserInformation和Authentication对象

感谢阅读。

1 个答案:

答案 0 :(得分: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);

您可以使用相同的响应类,或者您可以使用mapper类将响应作为参数,并通过使用 UserInformation.jav <映射状态来返回不同的pojo。 / strong> a或 Authentication.java

这样代码更易读,更清晰,您只使用所需的数据。 此外,如果需要序列化并传递给其他组件,则只传递必需的字段。