首页 > 解决方案 > 如何使用改造在微调器中填充 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;
        }
    }
}

标签: androidretrofit2

解决方案


当您使用 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


推荐阅读