服務器返回 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 自動反序列化:
// 疾病類型
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。@SerializedName),代碼簡潔健壯。