改造:如何决定 class 成员?
Retrofit : How to decide the class members?
我一直在尝试为 Android 进行改造。响应为空。如果我的理解是正确的,这可能是因为 400 响应或我的模型中的响应建模不正确 class。我得到的回复如下:
{"itemA":"data",
"itemB":"data",
"itemC":"data",
"ItemC":"",
"result_arr":[{"Val1":"A","Val2":"","id":"id","pr":"[=11=].00","sid":"a","cid":"a","price":"[=11=].00","cool_down":"0%","url":"","name":"Name"},
{"Val1":"A","Val2":"","id":"id","pr":"[=11=].00","sid":"a","cid":"a","price":"[=11=].00","cool_down":"0%","url":"","name":"Name"}]
,"statusCode":"200"}
我定义的模型如下:
API 结果
public class APIResultModel {
@SerializedName("itemA")
public String itemA;
@SerializedName("itemB")
public String itemB;
@SerializedName("itemC")
public String itemC;
@SerializedName("itemD")
public string itemD;
@SerializedName("results_arr")
public List<ProductModel> results_arr;
@SerializedName("status_code")
public String statusCode;
}
结果数组模型:
public class ResultArrayModel {
public String val1;
public String val2;
public String id;
public String pr;
public String sid;
public String cid;
public String price;
public String cool_down;
public String url;
public String name;
}
此响应的模型应该是什么样的?模型是如何从响应值导出的?
鉴于 JSON:
{
"itemA": "data",
"itemB": "data",
"itemC": "data",
"ItemD": "",
"result_arr": [
{
"Val1": "A",
"Val2": "",
"id": "id",
"pr": "[=10=].00",
"sid": "a",
"cid": "a",
"price": "[=10=].00",
"cool_down": "0%",
"url": "",
"name": "Name"
},
{
"Val1": "A",
"Val2": "",
"id": "id",
"pr": "[=10=].00",
"sid": "a",
"cid": "a",
"price": "[=10=].00",
"cool_down": "0%",
"url": "",
"name": "Name"
}
],
"statusCode": "200"
}
您的 api 结果模型可能是:
public class APIResult {
public String itemA;
public String itemB;
public String itemC;
public String itemD;
@SerializedName("results_arr")
public List<Product> products;
public String statusCode;
}
而您的产品型号可能是:
public class Product {
@SerializedName("Val1")
public String val1;
@SerializedName("Val2")
public String val2;
public String id;
public String pr;
public String sid;
public String cid;
public String price;
@SerializedName("cool_down")
public String coolDown;
public String url;
public String name;
}
假设你使用的是GSON,只有当字段名与JSON中的不一样时,你才应该使用SerializedName注解。
有些应用程序执行从 JSON 到 POJO 的转换,例如 Tyr。
查看您的代码,您似乎正在使用 Gson
。
为了 Gson
创建您的 pojo
,您模型的 serializedNames
必须与您得到的 json
响应相匹配。
您必须更改:
@SerializedName("status_code")
至:
@SerializedName("statusCode")
确保您的所有属性都遵循此规则,您就可以开始了。
我一直在尝试为 Android 进行改造。响应为空。如果我的理解是正确的,这可能是因为 400 响应或我的模型中的响应建模不正确 class。我得到的回复如下:
{"itemA":"data",
"itemB":"data",
"itemC":"data",
"ItemC":"",
"result_arr":[{"Val1":"A","Val2":"","id":"id","pr":"[=11=].00","sid":"a","cid":"a","price":"[=11=].00","cool_down":"0%","url":"","name":"Name"},
{"Val1":"A","Val2":"","id":"id","pr":"[=11=].00","sid":"a","cid":"a","price":"[=11=].00","cool_down":"0%","url":"","name":"Name"}]
,"statusCode":"200"}
我定义的模型如下:
API 结果
public class APIResultModel {
@SerializedName("itemA")
public String itemA;
@SerializedName("itemB")
public String itemB;
@SerializedName("itemC")
public String itemC;
@SerializedName("itemD")
public string itemD;
@SerializedName("results_arr")
public List<ProductModel> results_arr;
@SerializedName("status_code")
public String statusCode;
}
结果数组模型:
public class ResultArrayModel {
public String val1;
public String val2;
public String id;
public String pr;
public String sid;
public String cid;
public String price;
public String cool_down;
public String url;
public String name;
}
此响应的模型应该是什么样的?模型是如何从响应值导出的?
鉴于 JSON:
{
"itemA": "data",
"itemB": "data",
"itemC": "data",
"ItemD": "",
"result_arr": [
{
"Val1": "A",
"Val2": "",
"id": "id",
"pr": "[=10=].00",
"sid": "a",
"cid": "a",
"price": "[=10=].00",
"cool_down": "0%",
"url": "",
"name": "Name"
},
{
"Val1": "A",
"Val2": "",
"id": "id",
"pr": "[=10=].00",
"sid": "a",
"cid": "a",
"price": "[=10=].00",
"cool_down": "0%",
"url": "",
"name": "Name"
}
],
"statusCode": "200"
}
您的 api 结果模型可能是:
public class APIResult {
public String itemA;
public String itemB;
public String itemC;
public String itemD;
@SerializedName("results_arr")
public List<Product> products;
public String statusCode;
}
而您的产品型号可能是:
public class Product {
@SerializedName("Val1")
public String val1;
@SerializedName("Val2")
public String val2;
public String id;
public String pr;
public String sid;
public String cid;
public String price;
@SerializedName("cool_down")
public String coolDown;
public String url;
public String name;
}
假设你使用的是GSON,只有当字段名与JSON中的不一样时,你才应该使用SerializedName注解。
有些应用程序执行从 JSON 到 POJO 的转换,例如 Tyr。
查看您的代码,您似乎正在使用 Gson
。
为了 Gson
创建您的 pojo
,您模型的 serializedNames
必须与您得到的 json
响应相匹配。
您必须更改:
@SerializedName("status_code")
至:
@SerializedName("statusCode")
确保您的所有属性都遵循此规则,您就可以开始了。