如果数组在数组中,如何映射gson值

时间:2017-10-12 00:28:46

标签: android json gson

我在android中映射 gson 响应,在gson中从服务器获取响应,我找到了一个名为" 0"的数组,如何将其映射为是整数类型所以我在这里做错了什么。请看这里。



{
  "result": "success",
  "message": "department list filter by hospital",
  "data": {
    "departments": [
      {
        "pk": "17",
        "fk_hospital": "4",
        "department_slug": "cardiology",
        "department_en": "Cardiology",
        "department_ar": "أمراض القلب",
        "desc_en": "<p><span xss=removed>Cardiology<\/span><br><\/p>",
        "desc_ar": "<p xss=removed>أمراض القلب<br><\/p>",
        "hospital_en": "Adan Hospital",
        "hospital_ar": "سدسد",
        "hospital_slug": "adan-hospital",
        "sub_departments": [],
        "sub_departments_count": 0
      },
      {
        "pk": "19",
        "fk_hospital": "4",
        "department_slug": "elderly-services",
        "department_en": "Elderly services",
        "department_ar": "عربي",
        "desc_en": "",
        "desc_ar": "",
        "hospital_en": "Adan Hospital",
        "hospital_ar": "سدسد",
        "hospital_slug": "adan-hospital",
        "sub_departments": [],
        "sub_departments_count": 0
      },
      {
        "pk": "16",
        "fk_hospital": "4",
        "department_slug": "neurology",
        "department_en": "Neurology",
        "department_ar": "قسم الأعصاب",
        "desc_en": "<p><span xss=removed>Neurology.<\/span><br><\/p>",
        "desc_ar": "<p xss=removed>قسم الأعصاب<br><\/p>",
        "hospital_en": "Adan Hospital",
        "hospital_ar": "سدسد",
        "hospital_slug": "adan-hospital",
        "sub_departments": {
          "2": [
            {
              "pk": "6",
              "fk_hospital": "4",
              "fk_department": "16",
              "sub_department_slug": "arrhythmias",
              "sub_department_en": "arrhythmias",
              "sub_department_ar": "arrhythmias",
              "sub_desc_en": "<p>arrhythmias<br><\/p>",
              "sub_desc_ar": "<p>arrhythmias<br><\/p>",
              "hospital_en": "Adan Hospital",
              "hospital_ar": "سدسد",
              "department_en": "Neurology",
              "department_ar": "قسم الأعصاب"
            }
          ]
        },
        "sub_departments_count": 1
      }
    ]
  },
  "errors": false
}{
  "result": "success",
  "message": "department list filter by hospital",
  "data": {
    "departments": [
      {
        "pk": "17",
        "fk_hospital": "4",
        "department_slug": "cardiology",
        "department_en": "Cardiology",
        "department_ar": "أمراض القلب",
        "desc_en": "<p><span xss=removed>Cardiology<\/span><br><\/p>",
        "desc_ar": "<p xss=removed>أمراض القلب<br><\/p>",
        "hospital_en": "Adan Hospital",
        "hospital_ar": "سدسد",
        "hospital_slug": "adan-hospital",
        "sub_departments": [],
        "sub_departments_count": 0
      },
      {
        "pk": "19",
        "fk_hospital": "4",
        "department_slug": "elderly-services",
        "department_en": "Elderly services",
        "department_ar": "عربي",
        "desc_en": "",
        "desc_ar": "",
        "hospital_en": "Adan Hospital",
        "hospital_ar": "سدسد",
        "hospital_slug": "adan-hospital",
        "sub_departments": [],
        "sub_departments_count": 0
      },
      {
        "pk": "16",
        "fk_hospital": "4",
        "department_slug": "neurology",
        "department_en": "Neurology",
        "department_ar": "قسم الأعصاب",
        "desc_en": "<p><span xss=removed>Neurology.<\/span><br><\/p>",
        "desc_ar": "<p xss=removed>قسم الأعصاب<br><\/p>",
        "hospital_en": "Adan Hospital",
        "hospital_ar": "سدسد",
        "hospital_slug": "adan-hospital",
        "sub_departments": {
          "2": [
            {
              "pk": "6",
              "fk_hospital": "4",
              "fk_department": "16",
              "sub_department_slug": "arrhythmias",
              "sub_department_en": "arrhythmias",
              "sub_department_ar": "arrhythmias",
              "sub_desc_en": "<p>arrhythmias<br><\/p>",
              "sub_desc_ar": "<p>arrhythmias<br><\/p>",
              "hospital_en": "Adan Hospital",
              "hospital_ar": "سدسد",
              "department_en": "Neurology",
              "department_ar": "قسم الأعصاب"
            }
          ]
        },
        "sub_departments_count": 1
      }
    ]
  },
  "errors": false
}
&#13;
&#13;
&#13;

这是我的映射类。

public class DepartmentsData {
public String result;
public String message;
public DepatmentData data;
public boolean errors ;}

第二课

public class DepatmentData {
public List<DepartmentsItems> departments;}

第三课

public class DepartmentsItems {
public int pk;
public int fk_hospital;
public String department_slug;
public String department_en;
public String department_ar;
public String desc_en;
public String desc_ar;
public String hospital_en;
public String hospital_ar;
public String hospital_slug;
public int sub_departments_count;
public List<SubDepartments> sub_departments;}

这里混淆了第四类

public class SubDepartments {
public int pk;
public int fk_hospital;
public int fk_department;
public String sub_department_slug;
public String sub_department_en;
public String sub_department_ar;
public String sub_desc_en;
public String sub_desc_ar;
public String hospital_en;
public String hospital_ar;
public String department_en;
public String department_ar;}

在Gson中, SubDepartments 数组中有另一个数组。但是它的名字是0所以我在这里很困惑。如果它很冗长,请建议我任何其他最好的想法。

1 个答案:

答案 0 :(得分:1)

既然你有两个

"sub_departments": {
      "2": [

"sub_departments": [],

默认情况下,只能使用Gson成功解析对象。您可以尝试使用一些自定义反序列化器来检测JSON对象并将其转换为数组,如果这是您需要的。我不确定我可以给出一个例子,但Gson文档有一个关于自定义反序列化器的部分。

但是,您的数据似乎不正确,因为2似乎没有映射到任何内容,并且它不是任何其他部门的“索引”