首頁 Java java教程 如何在 Java 應用程式中解析 JSON 文字?

如何在 Java 應用程式中解析 JSON 文字?

Jan 22, 2025 am 06:10 AM

JSON:用於伺服器-客戶端通訊的多功能資料格式

有效地將資料從伺服器傳送到客戶端以顯示在網頁或其他視覺介面上通常涉及使用 JSON(JavaScript 物件表示法)。 讓我們探索 JSON 的功能並將其與其他方法進行比較。

為什麼選擇 JSON? 基於文字格式的優點

如果沒有 JSON(或類似的基於文字的格式),在應用程式的不同版本之間更新資料結構可能會出現問題。 舊版本可能無法理解新的資料字段,而新版本可能會因舊版本中遺失的資料而苦苦掙扎。 JSON 優雅地解決了這個問題:舊版本只是忽略未知字段,而新版本可以使用預設值來處理缺少的字段。 雖然二進位格式可以實現這一點,但它們需要維護新舊讀/寫函數,以及檔案中嵌入的版本號,與 JSON 的簡單性相比,這是一個巨大的開銷。 JSON 等基於文字的格式固有的可讀性也有助於除錯和開發。

理解 JSON(JavaScript 物件表示法)

JSON 是一種基於文字的標準結構化資料格式,受到 JavaScript 物件語法的啟發。 它的廣泛採用超越了 JavaScript;許多程式語言都提供內建或現成的函式庫來解析和產生 JSON。 本文重點介紹它在 Java 中的使用。

用 Java 解析 JSON:三個函式庫的比較

有些 Java 函式庫擅長解析 JSON 資料。 本文研究了三種流行的選擇:Jackson、Gson 和 org.json。

1。傑克森 (FasterXML)

Jackson 是一個高效能 JSON 處理器。 要使用它,請將以下依賴項新增至您的 pom.xml:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
登入後複製

範例程式碼:

此程式碼片段示範了使用 Jackson 將 JSON 轉換為 Java 物件:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonParserExample {
    public static void main(String[] args) throws Exception {
        String json = "{\"name\": \"John\", \"age\": 30}";

        ObjectMapper objectMapper = new ObjectMapper();
        Person person = objectMapper.readValue(json, Person.class);

        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

class Person {
    private String name;
    private int age;

    // Getters and setters
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}
登入後複製

Jackson 的 readValue 方法解析 JSON 字串並將其對應到 Person 類,利用類別的欄位和 getter/setter 方法。

2。 Gson(Google)

由 Google 開發的 Gson 提供了另一個強大的解決方案。 將此依賴項新增至您的 pom.xml:

<dependency>
    <groupId>com.google.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>
登入後複製

範例程式碼:

Gson 的 fromJson 方法執行類似的轉換:

import com.google.gson.Gson;

public class JsonParserExample {
    public static void main(String[] args) {
        String json = "{\"name\": \"John\", \"age\": 30}";

        Gson gson = new Gson();
        Person person = gson.fromJson(json, Person.class);

        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

// Person class remains the same as in the Jackson example
登入後複製

3。 org.json

org.json 函式庫提供了一個簡單的方法。 您需要新增適當的依賴項(請參閱 org.json 文件以取得最新版本)。

範例程式碼:

import org.json.JSONObject;

public class JsonParserExample {
    public static void main(String[] args) {
        String json = "{\"name\": \"John\", \"age\": 30}";

        JSONObject jsonObject = new JSONObject(json);

        String name = jsonObject.getString("name");
        int age = jsonObject.getInt("age");

        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }
}
登入後複製

這裡,org.json直接將JSON解析為JSONObject,允許使用getStringgetInt等方法存取其欄位。

How can one parse JSON text in a Java application?

選擇合適的庫

Jackson 由於其性能和廣泛的功能而經常受到企業專案的青睞。 Gson 的簡單性使其成為小型專案的好選擇。 org.json 提供了一個基本但實用的替代方案。 最好的庫取決於您項目的特定需求和偏好。 考慮效能要求、易用性以及附加功能的可用性等因素。 請在下面的評論中分享您使用其他 JSON 庫的經驗!

以上是如何在 Java 應用程式中解析 JSON 文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

2025年的前4個JavaScript框架:React,Angular,Vue,Svelte 2025年的前4個JavaScript框架:React,Angular,Vue,Svelte Mar 07, 2025 pm 06:09 PM

2025年的前4個JavaScript框架:React,Angular,Vue,Svelte

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Mar 17, 2025 pm 05:35 PM

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?

如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? 如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? Mar 17, 2025 pm 05:46 PM

如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?

Node.js 20:關鍵性能提升和新功能 Node.js 20:關鍵性能提升和新功能 Mar 07, 2025 pm 06:12 PM

Node.js 20:關鍵性能提升和新功能

冰山:數據湖桌的未來 冰山:數據湖桌的未來 Mar 07, 2025 pm 06:31 PM

冰山:數據湖桌的未來

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復 Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復 Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復

如何在Java中實施功能編程技術? 如何在Java中實施功能編程技術? Mar 11, 2025 pm 05:51 PM

如何在Java中實施功能編程技術?

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射? 如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射? Mar 17, 2025 pm 05:43 PM

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?

See all articles