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

Java JSON 轉物件完整指南:三大主流庫實戰比較

     編輯:Java 程式設計入門

前言

在 Java 開發中,JSON 與物件的相互轉換是日常高頻操作。本文將介紹三種主流方案——JSON-lib、Jackson、Gson,並針對複雜巢狀結構給出最佳實踐建議。

方案一:JSON-lib(較早期選擇)

JSON-lib 是早期常用的庫,依賴 commons-lang、commons-beanutils 等第三方包。對於簡單 POJO 轉換尚可,但面對多層巢狀 JSON 時,程式碼冗長且效能一般,目前較少在新專案中採用。

方案二:Jackson(企業級首選)

Jackson 是 Spring Boot 預設的 JSON 處理器,效能優異、功能豐富,支援流式解析、樹模型、資料綁定三種模式。處理複雜結構時,只需定義對應的 Java Bean,配合 @JsonProperty 等註解即可靈活映射,適合中大型專案。

方案三:Gson(輕量靈活,Android 首選)

Gson 是 Google 開源庫,特點是零依賴、API 直觀。它提供兩種核心概念:

  • JsonObject:對應 JSON 物件
  • JsonArray:對應 JSON 陣列

無需預先定義實體類,即可靈活遍歷、提取任意深度的巢狀資料,極適合結構不固定或臨時解析場景。

Gson 實戰範例:解析多層問卷資料

package com.mycompany.gsondata;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class App {
    public static void main(String[] args) {
        String jsonData = "{\"questionnaireID\": \"QNTest\",\"answerResults\":[{\"questionID\":\"QSTest01\",\"anserContent\":\"cfb7f441-9086-11e3-8cf8-000c2945c442\"},{\"questionID\":\"QSTest01\",\"anserContent\":\"cfb7f441-9086-11e3-8cf8-000c2945c442\"},{\"questionID\":\"QSTest03\",\"anserContent\":\"6b3a9cce-9087-11e3-8cf8-000c2945c442,a086331d-9087-11e3-8cf8-000c2945c442\"},{\"questionID\":\"QSTest01\",\"anserContent\":\"cfb7f441-9086-11e3-8cf8-000c2945c442\"},{\"questionID\":\"QSTest05\",\"anserContent\":\"test測試文字填空\"},{\"questionID\":\"QSTest06\",\"anserContent\":\"3\"},{\"questionID\":\"QSTest07\",\"anserContent\":\"2.2\"}]}";

        // 解析根節點
        JsonObject root = new JsonParser().parse(jsonData).getAsJsonObject();
        System.out.println("問卷ID: " + root.get("questionnaireID").getAsString());

        // 遍歷答案陣列
        JsonArray answerList = root.getAsJsonArray("answerResults");
        for (int i = 0; i < answerList.size(); i++) {
            JsonObject ans = answerList.get(i).getAsJsonObject();
            System.out.println("題號: " + ans.get("questionID").getAsString());
            System.out.println("答案: " + ans.get("anserContent").getAsString());
        }
    }
}

選型建議

場景推薦庫理由
Spring Boot 專案、高效能需求Jackson生態完善、預設整合、流式解析省記憶體
Android / 輕量專案、結構動態Gson零依賴、API 簡潔、動態解析靈活
舊專案維護JSON-lib僅作相容,不建議新專案使用

總結

現代 Java 開發中,Jackson 與 Gson 為雙雄。若專案已使用 Spring 生態,Jackson 為自然之選;若需極簡依賴或處理非固定結構 JSON,Gson 的 JsonObject/JsonArray 模式極具優勢。根據團隊熟悉度與專案屬性選型即可。

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