首页 > 解决方案 > 如何使用 Android Volley 从发布请求中检索数据

问题描述

我正在申请存款和取款,因为我已经向 API 提供了参数,我可以获得响应,但我想获得数组内某些元素的干净结果:

    {
    "user": {
        "id": "3",
        "first_name": "jef",
        "last_name": "handani",
        "email": "jeffryhandani@gmail.com",
        "verify_status": "1",
        "Store_name": "7 eleven",
        "Store_City": "Kuala Lumpur",
        "Store_Region": "Kuala Lumpur",
        "Store_address": "Jalan Bukit Jalil",
        "Latitudes": "5.9668083",
        "Longtitudes": "13.0338011",
        "created_by": null,
        "qr_code": "307",
        "first_login": "1"
    },
    "total_amount": "220.00",
    "total_fee": "20.00",
    "amount": "200",
    "method": "Express Exchange / Local bank transfer"
}

所以我需要从响应中获取total_amounttotal_feeamountmethod

在下面的代码中,我只需要获取上面提到的数据,任何人都可以帮助我:

private void depositVerify(){

    StringRequest request = new StringRequest(Request.Method.POST, URLstring, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            TextView resp = findViewById(R.id.serverResp);

            resp.setText(response);


        }

    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    }) {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {

            EditText amount = findViewById(R.id.editamount);

            Map<String, String> param = new HashMap<>();
            param.put("api_key", getApi_key());
            param.put("user_key", getUser_key());
            param.put("currency", "debit_base");
            param.put("amount", amount.getText().toString());
            param.put("method", "local_bank");

            return param;
        }
    };
    Volley.newRequestQueue(depositAlert1.this).add(request);

}

标签: androidandroid-volley

解决方案


Step-1:在库下面集成。

implementation 'com.google.code.gson:gson:2.8.5'

第二步:复制到 POJO 类下面。

public class Example {

    @SerializedName("user")
    @Expose
    private User user;
    @SerializedName("total_amount")
    @Expose
    private String totalAmount;
    @SerializedName("total_fee")
    @Expose
    private String totalFee;
    @SerializedName("amount")
    @Expose
    private String amount;
    @SerializedName("method")
    @Expose
    private String method;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(String totalAmount) {
        this.totalAmount = totalAmount;
    }

    public String getTotalFee() {
        return totalFee;
    }

    public void setTotalFee(String totalFee) {
        this.totalFee = totalFee;
    }

    public String getAmount() {
        return amount;
    }

    public void setAmount(String amount) {
        this.amount = amount;
    }

    public String getMethod() {
        return method;
    }

    public void setMethod(String method) {
        this.method = method;
    }

    public class User {

        @SerializedName("id")
        @Expose
        private String id;
        @SerializedName("first_name")
        @Expose
        private String firstName;
        @SerializedName("last_name")
        @Expose
        private String lastName;
        @SerializedName("email")
        @Expose
        private String email;
        @SerializedName("verify_status")
        @Expose
        private String verifyStatus;
        @SerializedName("Store_name")
        @Expose
        private String storeName;
        @SerializedName("Store_City")
        @Expose
        private String storeCity;
        @SerializedName("Store_Region")
        @Expose
        private String storeRegion;
        @SerializedName("Store_address")
        @Expose
        private String storeAddress;
        @SerializedName("Latitudes")
        @Expose
        private String latitudes;
        @SerializedName("Longtitudes")
        @Expose
        private String longtitudes;
        @SerializedName("created_by")
        @Expose
        private Object createdBy;
        @SerializedName("qr_code")
        @Expose
        private String qrCode;
        @SerializedName("first_login")
        @Expose
        private String firstLogin;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getFirstName() {
            return firstName;
        }

        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

        public String getLastName() {
            return lastName;
        }

        public void setLastName(String lastName) {
            this.lastName = lastName;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String getVerifyStatus() {
            return verifyStatus;
        }

        public void setVerifyStatus(String verifyStatus) {
            this.verifyStatus = verifyStatus;
        }

        public String getStoreName() {
            return storeName;
        }

        public void setStoreName(String storeName) {
            this.storeName = storeName;
        }

        public String getStoreCity() {
            return storeCity;
        }

        public void setStoreCity(String storeCity) {
            this.storeCity = storeCity;
        }

        public String getStoreRegion() {
            return storeRegion;
        }

        public void setStoreRegion(String storeRegion) {
            this.storeRegion = storeRegion;
        }

        public String getStoreAddress() {
            return storeAddress;
        }

        public void setStoreAddress(String storeAddress) {
            this.storeAddress = storeAddress;
        }

        public String getLatitudes() {
            return latitudes;
        }

        public void setLatitudes(String latitudes) {
            this.latitudes = latitudes;
        }

        public String getLongtitudes() {
            return longtitudes;
        }

        public void setLongtitudes(String longtitudes) {
            this.longtitudes = longtitudes;
        }

        public Object getCreatedBy() {
            return createdBy;
        }

        public void setCreatedBy(Object createdBy) {
            this.createdBy = createdBy;
        }

        public String getQrCode() {
            return qrCode;
        }

        public void setQrCode(String qrCode) {
            this.qrCode = qrCode;
        }

        public String getFirstLogin() {
            return firstLogin;
        }

        public void setFirstLogin(String firstLogin) {
            this.firstLogin = firstLogin;
        }

    }
}

第 3 步:解析响应。

private void depositVerify(){

        StringRequest request = new StringRequest(Request.Method.POST, URLstring, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                Example example = new Gson().fromJson(response,Example.class);

                String total_amount = example.getTotalAmount();
                String total_fee = example.getTotalFee();
                String amount = example.getAmount();
                String method  = example.getMethod();

            }

        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {

                EditText amount = findViewById(R.id.editamount);

                Map<String, String> param = new HashMap<>();
                param.put("api_key", getApi_key());
                param.put("user_key", getUser_key());
                param.put("currency", "debit_base");
                param.put("amount", amount.getText().toString());
                param.put("method", "local_bank");

                return param;
            }
        };
        Volley.newRequestQueue(depositAlert1.this).add(request);

    }

推荐阅读