繁体   English   中英

如何使用翻新Android解析对象内部的数组

[英]How to Parse Array inside Object With Retrofit Android

我是Retrofit Library的新手,我曾经使用Volley,试图解析对象内部的数组,但是我不知道如何做,这是我的Json响应

  {
        "response": {
            "code": "1",
            "success": true,
            "customers": [
                {
                    "id": 1,
                    "name": "reem",
                    "customer_type": "1",
                    "address": "45سسسس",
                    "mobile_no": "05684412211",
                    "phone_no": "414511555",
                    "created_at": "2018-07-30 08:26:48",
                    "updated_at": "2018-07-30 08:26:48"
                }
            ]
        }
    }

我想从响应中获取客户数组,这里是客户模型:

public class Customer {

    @SerializedName("id")
    private Integer id;
    @SerializedName("customer_type")
    private Integer customer_type;
    @SerializedName("name")
    private String name;
    @SerializedName("address")
    private String address;
    @SerializedName("mobile_no")
    private String mobile_no;
    @SerializedName("phone_no")
    private String phone_no;

    public Customer(Integer id, Integer customer_type, String name, String address, String mobile_no, String phone_no) {
        this.id = id;
        this.customer_type = customer_type;
        this.name = name;
        this.address = address;
        this.mobile_no = mobile_no;
        this.phone_no = phone_no;
    }

    public Integer getId() {
        return id;
    }

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

    public Integer getCustomer_type() {
        return customer_type;
    }

    public void setCustomer_type(Integer customer_type) {
        this.customer_type = customer_type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getMobile_no() {
        return mobile_no;
    }

    public void setMobile_no(String mobile_no) {
        this.mobile_no = mobile_no;
    }

    public String getPhone_no() {
        return phone_no;
    }

    public void setPhone_no(String phone_no) {
        this.phone_no = phone_no;
    }
}

这是数据服务接口:

@GET("get_customers")
    Call<List<Customer>> getAllCustomer();

能否请您帮我了解如何解析它,谢谢。

制作另一个POJO类,它将具有这样的List

public class Response{

    @SerializedName("response")
    private Response response;

    @SerializedName("code")
    private String code;

    @SerializedName("success")
    private boolean success;

    @SerializedName("customers")
    private List<Customers> customers;

    public void setResponse(Response response){
        this.response = response;
    }

    public Response getResponse(){
        return response;
    }

    public void setCode(String code){
        this.code = code;
    }

    public String getCode(){
        return code;
    }

    public void setSuccess(boolean success){
        this.success = success;
    }

    public boolean isSuccess(){
        return success;
    }

    public void setCustomers(List<Customers> customers){
        this.customers = customers;
    }

    public List<Customers> getCustomers(){
        return customers;
    }
}

然后在您的数据服务界面

@GET("get_customers")
Call<Response> getAllCustomer();

然后,从改造电话获得车体后,您可以得到这样的客户列表

reponse.getCustomers();

在正确的api应该只返回客户json的列表

否则您应该将响应更新为

    public class Customer
{
    public int id { get; set; }
    public string name { get; set; }
    public string customer_type { get; set; }
    public string address { get; set; }
    public string mobile_no { get; set; }
    public string phone_no { get; set; }
    public string created_at { get; set; }
    public string updated_at { get; set; }
}

public class Response
{
    public string code { get; set; }
    public bool success { get; set; }
    public List<Customer> customers { get; set; }
}

public class RootObject
{
    public Response response { get; set; }
}

    @GET("get_customers")
Call<RootObject> getAllCustomer();

解析对象时,我们需要从Json的顶部开始。

因此,首先您需要获取“响应”键,然后才是内部对象:客户的数组。

为此,添加1个名为CustomersData.java类,其中包括Response.java对象,客户的Response.java容器数组:

CustomersData.java:

public class CustomersData {
    @SerializedName("response")
    public Response response;
}

Response.java

public class Response {

        @SerializedName("code")
        public String code;

        @SerializedName("success")
        public boolean customers;

        @SerializedName("customers")
        public ArrayList<Customer> customers;
    }

并使用Retrofit来获取数据,方法如下:

@GET("get_customers")
    Call< CustomersData > getAllCustomer();

使用访问它:

ArrayList <Customer> array = customersData.response.customers;

使用此网站可以创建模型/ pojo类。 稍后重命名它们。
不要忘记在pojo类中的以下代码中添加@SeralizedName("name_like_your_json")此代码。 (对于您要访问的每个变量)

@SerializedName("id")
private Integer id 

您的模型类将如下所示。

public class Customer {

private Integer id;
private String name;
private String customerType;
private String address;
private String mobileNo;
private String phoneNo;
private String createdAt;
private String updatedAt;

public Integer getId() {
    return id;
}

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

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getCustomerType() {
    return customerType;
}

public void setCustomerType(String customerType) {
    this.customerType = customerType;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

public String getMobileNo() {
    return mobileNo;
}

public void setMobileNo(String mobileNo) {
    this.mobileNo = mobileNo;
}

public String getPhoneNo() {
    return phoneNo;
}

public void setPhoneNo(String phoneNo) {
    this.phoneNo = phoneNo;
}

public String getCreatedAt() {
    return createdAt;
}

public void setCreatedAt(String createdAt) {
    this.createdAt = createdAt;
}

public String getUpdatedAt() {
    return updatedAt;
}

public void setUpdatedAt(String updatedAt) {
    this.updatedAt = updatedAt;
}}

public class Example {

private Response response;

public Response getResponse() {
    return response;
}

public void setResponse(Response response) {
    this.response = response;
}}


public class Response {

private String code;
private Boolean success;
private List<Customer> customers = null;

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

public Boolean getSuccess() {
    return success;
}

public void setSuccess(Boolean success) {
    this.success = success;
}

public List<Customer> getCustomers() {
    return customers;
}

public void setCustomers(List<Customer> customers) {
    this.customers = customers;
}}

之后,在您的界面中使用它即可。

@GET("get_customers")
Call<Example> getAllCustomer();

看上面的代码。 您的json响应以Json Object开头。 因此,我们的呼吁必须是客观的。 在这种情况下,我们的对象是Example类。 在此内部,另一个对象称为Response。 在那堂课中,我们的设计

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM