我是Retrofit
库的新手,曾经使用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();
请帮助我了解如何解析它,谢谢。
答案 0 :(得分:7)
制作另一个具有这样的List的POJO类
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();
答案 1 :(得分:1)
正确的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();
答案 2 :(得分:0)
解析对象时,我们需要从Json的顶部开始。
因此,首先需要获得“响应”键,然后才是内部对象:客户的数组。
为此,添加1个名为public class HelloWorldInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{ApplicationConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
的类,其中包括CustomersData.java
对象,Response.java
个客户容器数组:
CustomersData.java:
Response.java
Response.java
public class CustomersData {
@SerializedName("response")
public Response response;
}
要使用Retrofit获得数据,请像这样
public class Response {
@SerializedName("code")
public String code;
@SerializedName("success")
public boolean customers;
@SerializedName("customers")
public ArrayList<Customer> customers;
}
使用:
进行访问@GET("get_customers")
Call< CustomersData > getAllCustomer();
答案 3 :(得分:0)
使用此uint8_t can't be printed with cout创建模型/ 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。在那堂课中我们的设计