首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android 解析嵌套 JSON 數據:疾病類型與名稱雙層列表結構

     編輯:程式設計疑難解答

數據結構分析

服務器返回 JSON 包含兩個並行數組:

  • mem_message_records:疾病類型列表,每項含 message_disease_typeid、message_disease_type。
  • mem_message_recordss:二維數組,每個子數組對應一個類型下的疾病名稱列表,含 message_diseaseid、message_disease。

兩數組下標一一對應,即 mem_message_records[i] 對應 mem_message_recordss[i]。

解析方案:Gson 實體類映射

定義對應實體類,利用 Gson 自動反序列化:

// 疾病類型
public class DiseaseType {
    @SerializedName("message_disease_typeid")
    public String typeId;
    @SerializedName("message_disease_type")
    public String typeName;
}

// 疾病名稱
public class Disease {
    @SerializedName("message_diseaseid")
    public String diseaseId;
    @SerializedName("message_disease")
    public String diseaseName;
}

// 響應包裝類
public class ResponseData {
    public int code;
    public String message;
    public Data data;

    public static class Data {
        public List<DiseaseType> mem_message_records;
        public List<List<Disease>> mem_message_recordss; // 二維列表
    }
}

// 解析調用
Gson gson = new Gson();
ResponseData response = gson.fromJson(jsonString, ResponseData.class);

// 遍歷綁定 ListView
List<DiseaseType> types = response.data.mem_message_records;
List<List<Disease>> diseasesList = response.data.mem_message_recordss;
for (int i = 0; i < types.size(); i++) {
    DiseaseType type = types.get(i);
    List<Disease> diseases = diseasesList.get(i);
    // type.typeName 為類型名,diseases 為該類型下的疾病列表
    // 可構建 ExpandableListView 或雙列表聯動 UI
}

關鍵點

  • 使用 List<List<Disease>> 映射二維數組 mem_message_recordss。
  • 下標對應關系由服務器保證,解析後按索引關聯即可。
  • Gson 自動處理字段名映射(需加 @SerializedName),代碼簡潔健壯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved