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

JSON 轉 Java 物件三種主流庫比較:JSON-lib、Jackson、Gson

     編輯:Java 相關知識

前言

Java 處理 JSON 最常用的三個庫:JSON-lib(較舊)、Jackson(高效能、Spring Boot 預設)、Gson(Google 出品、API 簡潔)。本文以嵌套 JSON 為例,展示 Gson 的靈活取值方式。

範例 JSON

{
  "questionnaireID": "QNTest",
  "answerResults": [
    {"questionID":"QSTest01","anserContent":"cfb7f441-..."},
    {"questionID":"QSTest03","anserContent":"6b3a9cce-...,a086331d-..."},
    {"questionID":"QSTest05","anserContent":"test測試文字填空"},
    {"questionID":"QSTest06","anserContent":"3"},
    {"questionID":"QSTest07","anserContent":"2.2"}
  ]
}

Gson 解析程式碼

import com.google.gson.*;

public class JsonParseDemo {
    public static void main(String[] args) {
        String json = "..."; // 上述 JSON
        JsonObject root = JsonParser.parseString(json).getAsJsonObject();

        // 取根節點單值
        String qnId = root.get("questionnaireID").getAsString();
        System.out.println("問卷ID: " + qnId);

        // 取陣列並逐項解析
        JsonArray answers = root.getAsJsonArray("answerResults");
        for (JsonElement elem : answers) {
            JsonObject obj = elem.getAsJsonObject();
            String qId = obj.get("questionID").getAsString();
            String content = obj.get("anserContent").getAsString();
            System.out.printf("題號: %s, 回答: %s%n", qId, content);
        }
    }
}

三大庫比較表

特性JSON-libJacksonGson
依賴ezmorph, commons-lang 等無額外依賴 (core)無額外依賴
效能一般極高 (流式/樹模型)高
API 風格DTO 映射註解/Mapper/TreeTree Model / DTO
適用場景舊專案維護高吞吐、REST APIAndroid、快速原型

建議

  • 新專案優先選 Jackson (Spring 生態) 或 Gson (輕量、Android)。
  • 複雜巢狀結構可先用 JsonObject/JsonArray 走訪,再映射到 DTO。
  • 日期、Enum、泛型映射皆可透過自訂 TypeAdapter (Gson) 或 JsonDeserializer (Jackson) 處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved