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

HttpClient + Gson:MyJsonObject 其實是自定義實體類,用於 JSON 自動映射

     編輯:程式設計疑難解答

代碼片段

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; /* ... */ }

對應 JSON 結構

{
  "status": "ok",
  "data": { "id": 1001, "name": "商品A" },
  "items": [ { "sku": "A001", "price": 99.0 }, ... ]
}

關鍵優勢

  • 類型安全:編譯期檢查字段拼寫
  • 零樣板代碼:無需 JSONObject.getString() 逐個提取
  • 嵌套對象/列表自動映射:Gson 遞歸處理

提示:字段名需與 JSON 鍵一致,或用 @SerializedName("json_key") 註解映射不同命名風格(如 snake_case ↔ camelCase)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved