原始碼:
Gson gson = new Gson();
Datas d = gson.fromJson(str, Datas.class);
若 d 為 null 或欄位為 null,通常是因為 JSON 根物件結構與 Datas 類別定義不一致。
{
"result_code": 0,
"result": [
{
"sex": "男",
"opendate": "2015-12-02",
"name": "李飛",
"type": "",
"enddate": "2016-12-02"
}
]
}
public class Datas {
public int result_code;
public List result; // 必須是 List
public static class ResultBean {
public String sex, opendate, name, type, enddate;
}
}
Log.d("JSON", str); 確認內容完整。openDate 而 Model 為 opendate 需加 @SerializedName("openDate")。List,需使用 TypeToken:Type type = new TypeToken>(){}.getType();
List list = gson.fromJson(jsonArrayString, type);
@SerializedName 明確映射,避免混淆壓縮導致欄位名變更。GsonBuilder 設定預設值、日期格式、null 處理:Gson gson = new GsonBuilder().serializeNulls().setDateFormat("yyyy-MM-dd").create();Gson 解析為空 90% 是 JSON 與 Model 結構不符。對照 JSON 結構逐項檢查 Model 類別、欄位名稱、泛型型別,並善用 @SerializedName 與 TypeToken 即可解決。