[英]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.