android - 如何使用改造在微调器中填充 JSON 响应(POST)?
问题描述
亲爱的朋友们,这里需要填充微调器,这是使用改造的休息服务的 JSON 响应。经过长时间的研究,我找不到任何样本,任何人都可以分享一些基于此的样本,这对我非常有用,在此先感谢!
这是 JSON 响应,请帮助我在微调器中解析和填充。
{
"d": [
{
"__type": "ServiceType:#TVS_Complaint_BL.Entities",
"Message": "OK",
"Success": true,
"ServiceCode": "P1",
"ServiceName": "Paid Service",
"nServiceID": 1
},
{
"__type": "ServiceType:#TVS_Complaint_BL.Entities",
"Message": "OK",
"Success": true,
"ServiceCode": "F1",
"ServiceName": "Free Service",
"nServiceID": 2
},
{
"__type": "ServiceType:#TVS_Complaint_BL.Entities",
"Message": "OK",
"Success": true,
"ServiceCode": "PS1",
"ServiceName": "Post Warranty",
"nServiceID": 3
},
{
"__type": "ServiceType:#TVS_Complaint_BL.Entities",
"Message": "OK",
"Success": true,
"ServiceCode": "FOC",
"ServiceName": "FOC",
"nServiceID": 4
}
]
}
车辆响应:
public class VehicleResponse {
private List<DBean> d;
public List<DBean> getD() {
return d;
}
public void setD(List<DBean> d) {
this.d = d;
}
public static class DBean {
/**
* __type : ServiceType:#TVS_Complaint_BL.Entities
* Message : OK
* Success : true
* ServiceCode : P1
* ServiceName : Paid Service
* nServiceID : 1
*/
private String __type;
private String Message;
private boolean Success;
private String ServiceCode;
private String ServiceName;
private int nServiceID;
public String get__type() {
return __type;
}
public void set__type(String __type) {
this.__type = __type;
}
public String getMessage() {
return Message;
}
public void setMessage(String Message) {
this.Message = Message;
}
public boolean isSuccess() {
return Success;
}
public void setSuccess(boolean Success) {
this.Success = Success;
}
public String getServiceCode() {
return ServiceCode;
}
public void setServiceCode(String ServiceCode) {
this.ServiceCode = ServiceCode;
}
public String getServiceName() {
return ServiceName;
}
public void setServiceName(String ServiceName) {
this.ServiceName = ServiceName;
}
public int getNServiceID() {
return nServiceID;
}
public void setNServiceID(int nServiceID) {
this.nServiceID = nServiceID;
}
}
}
车辆请求:
public class VehicleRequest {
/**
* argRequest : {"Token":"356657bba5a94daeb02a2a5bd93c6b71"}
*/
private ArgRequestBean argRequest;
public ArgRequestBean getArgRequest() {
return argRequest;
}
public void setArgRequest(ArgRequestBean argRequest) {
this.argRequest = argRequest;
}
public static class ArgRequestBean {
/**
* Token : 356657bba5a94daeb02a2a5bd93c6b71
*/
private String Token;
public String getToken() {
return Token;
}
public void setToken(String Token) {
this.Token = Token;
}
}
}
解决方案
当您使用 Retrofit 使用 API 时,我建议您使用 Gson。以下依赖项应根据文档工作:
dependencies {
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
}
检索响应数据后,您可以使用 Gson 访问 DBean 的每个实例。假设您的响应数据被提取为Response<JsonObject> response
:
gson = new Gson();
List<DBean> dBeanList = new ArrayList<>();
JsonObject jsonObject = gson.toJsonTree(response.body()).getAsJsonObject();
dBeanList = jsonObject.getD().getAsJsonArray();
然后您可以使用以下列表填充微调器DBean
:
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<DBean> adapterDBeans = new ArrayAdapter<>
(this,android.R.layout.simple_spinner_item, dBeanList);
adapterDBeans.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapterDBeans);
参考资料:https ://github.com/codepath/android_guides/wiki/Consuming-APIs-with-Retrofit
推荐阅读
- python - 如何在目录中的所有文件类型中搜索正则表达式
- zapier - 捆绑上下文和变量传播
- python - 如何在散景中使用“DataRange1D”?
- reporting-services - 在 Visual Studio 2015 中构建 rdl 正在从我的 xml 代码中删除换行符
- javascript - Matching Contents from One Array to Another And Returning the Filtered Array
- r - 通过 R 使用 System Shell 命令添加标头
- html - Not able to store dynamic FormArray in FormGroup
- python - Python 在不知道密钥名称的情况下下载 S3 文件
- python - Python - 使用 sum 函数尝试/排除
- haskell - Haskell: How to subtract numbers in a list with foldr?