将不同的数据传递给改造模型中的相同名称 json 属性
Passing different data to same name json attribute in retrofit model
有一个 WebService,我想从中获取 @GET 和 @POST 数据,但它的所有响应都像这个主题:
{
"data": {
...
},
"success": ... ,
"message": ...
}
但是 data 有不同的输出主题,像这样:
{
"data": {
"update_status": "critical",
"last_version_name": "1.0.3",
"last_version_code": "3",
"need_to_upgrade": false
},
"success": true,
"message": "DONE!"
}
&
{
"data": {
"year": "2020",
"month": "09",
"day": "09",
"hour": "06",
"second": "00",
"unix": "1599631246"
},
"success": true,
"message": null
}
我如何定义模型以通过 Retrofit 和 GSON 转换器使用它?
我应该在某处使用@SerializedName吗?
(即:)
public class Response{
private boolean success;
private String message;
//private Data data
}
创建一个基本合同并根据所有响应 classes 扩展它。在合同 data
部分将是通用的。
public class BaseResponse<T> {
public boolean success;
public String message;
public T data;
}
现在您必须为每种类型的响应创建数据class。
public class MyResponse{
public String update_status;
public String last_version_name;
public String last_version_code;
public boolean need_to_upgrade;
}
现在您可以使用 BaseResponse<MyResponse>
作为 return 类型的改造调用。您可以对数组响应执行相同的操作,即创建一个 BaseListResponse
class.
有一个 WebService,我想从中获取 @GET 和 @POST 数据,但它的所有响应都像这个主题:
{
"data": {
...
},
"success": ... ,
"message": ...
}
但是 data 有不同的输出主题,像这样:
{
"data": {
"update_status": "critical",
"last_version_name": "1.0.3",
"last_version_code": "3",
"need_to_upgrade": false
},
"success": true,
"message": "DONE!"
}
&
{
"data": {
"year": "2020",
"month": "09",
"day": "09",
"hour": "06",
"second": "00",
"unix": "1599631246"
},
"success": true,
"message": null
}
我如何定义模型以通过 Retrofit 和 GSON 转换器使用它? 我应该在某处使用@SerializedName吗?
(即:)
public class Response{
private boolean success;
private String message;
//private Data data
}
创建一个基本合同并根据所有响应 classes 扩展它。在合同 data
部分将是通用的。
public class BaseResponse<T> {
public boolean success;
public String message;
public T data;
}
现在您必须为每种类型的响应创建数据class。
public class MyResponse{
public String update_status;
public String last_version_name;
public String last_version_code;
public boolean need_to_upgrade;
}
现在您可以使用 BaseResponse<MyResponse>
作为 return 类型的改造调用。您可以对数组响应执行相同的操作,即创建一个 BaseListResponse
class.