ResponseHandler<MyJsonObject> rh = new ResponseHandler<MyJsonObject>() {
@Override
public MyJsonObject handleResponse(HttpResponse response) throws IOException {
// ...
Gson gson = new GsonBuilder().create();
Reader reader = new InputStreamReader(entity.getContent(), charset);
return gson.fromJson(reader, MyJsonObject.class); // 關鍵行
}
};
MyJsonObject myjson = client.execute(httpget, rh);
MyJsonObject 是開發者自定義的 Java Bean 類,與服務端返回的 JSON 結構字段一一對應。Gson 的 fromJson(json, MyJsonObject.class) 會自動將 JSON 反序列化為該類的實例,免去手動解析每個字段。
public class MyJsonObject {
private String status;
private Data data;
private List<Item> items;
// getter/setter 省略
}
class Data { private int id; private String name; /* ... */ }
class Item { private String sku; private double price; /* ... */ }
{
"status": "ok",
"data": { "id": 1001, "name": "商品A" },
"items": [ { "sku": "A001", "price": 99.0 }, ... ]
}
JSONObject.getString() 逐個提取提示:字段名需與 JSON 鍵一致,或用
@SerializedName("json_key")註解映射不同命名風格(如 snake_case ↔ camelCase)。