首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Gson 解析 JsonObject 與 JsonArray 完整指南

     編輯:Java 綜合教學

核心類別

  • Gson — 主入口,負責序列化/反序列化。
  • JsonParser — 將 JSON 字串解析為 JsonElement 樹。
  • JsonObject — 代表 JSON 物件 {...}。
  • JsonArray — 代表 JSON 陣列 [...]。

解析流程

  1. 建立 Gson 與 JsonParser 實例。
  2. parser.parse(jsonStr) 得到 JsonElement。
  3. 判斷型別:isJsonObject() 或 isJsonArray()。
  4. 轉型為 JsonObject 或 JsonArray。
  5. 遍歷陣列,用 gson.fromJson(element, Bean.class) 轉為 Java Bean。

程式碼範例

public void parseJsonArray(String strJson) {
    Gson gson = new Gson();
    JsonParser parser = new JsonParser();
    JsonElement el = parser.parse(strJson);

    JsonObject jsonObj = null;
    if (el.isJsonObject()) {
        jsonObj = el.getAsJsonObject();
    }

    JsonArray jsonArray = null;
    if (el.isJsonArray()) {
        jsonArray = el.getAsJsonArray();
    }

    if (jsonArray != null) {
        for (JsonElement e : jsonArray) {
            JavaBeanDemo bean = gson.fromJson(e, JavaBeanDemo.class);
            // 處理 bean...
        }
    }
}

進階技巧

  • 直接用 gson.fromJson(jsonStr, TypeToken) 一步到位解析泛型集合。
  • 使用 @SerializedName 映射 JSON 欄位與 Java 欄位名稱不一致的情況。
  • 註冊 TypeAdapter 處理特殊型別(如 LocalDateTime)。

常見坑點

  • JSON 字串為空或 null 時需防禦性檢查。
  • 數字型別精度問題:大數字建議用 String 或 BigDecimal 接收。
  • 日期格式預設非 ISO-8601,需自訂 GsonBuilder.setDateFormat()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved