知識庫 / JSON RSS 訂閱

使用靜態方法代替已棄用的JsonParser

JSON
HongKong
9
09:44 PM · Dec 05 ,2025

1. 引言

高效的JSON解析是Java編程中數據操作和通信的關鍵任務之一。

Gson庫提供了一個多功能的<em >JsonParser</em>類,以簡化轉換過程。 此外,需要注意的是,該類已被廢棄,無需實例化。 相反,我們可以利用提供的靜態方法進行轉換。

在本教程中,我們將深入探討如何使用靜態方法而不是廢棄的<em >JsonParser</em>進行高效的JSON解析。

2. 過時使用 JsonParser

以下是一個使用過時 JsonParser 解析 JSON 字符串的示例:

String jsonString = "{\"name\": \"John\", \"age\":30, \"city\":\"New York\"}";
JsonObject jsonObject = new JsonParser().parse(jsonString).getAsJsonObject();

已棄用的 JsonParser 實例可能仍然可以正常工作,但開發者應積極轉向新的、改進的做法。

3. 擁抱靜態方法

Gson 庫提供了靜態方法作為替代已棄用的方法。 此外,它還是一種更優雅、更易於理解的 JSON 解析方式。

讓我們探索推薦的靜態方法:

3.1. 從字符串解析

我們可以直接將 JSON 字符串解析為 JsonObject,而無需使用已棄用的 JsonParser 實例,通過使用靜態方法 parseString() 實現。

首先,讓我們設置一個描述人員相關數據的 JSON 字符串,並使用給定的鍵(如 nameagecity)讀取一個相關的 JsonObject,該類構造函數位於 DeprecatedJsonParserUnitTest 中。

String jsonString = "{\"name\": \"John\", \"age\":30, \"city\":\"New York\"}";
JsonObject expectedJsonObject = new JsonObject();

DeprecatedJsonParserUnitTest() {
    expectedJsonObject.addProperty("name", "John");
    expectedJsonObject.addProperty("age", 30);
    expectedJsonObject.addProperty("city", "New York");
}

現在,讓我們直接解析 jsonStringJsonObject

@Test
public void givenJsonString_whenUsingParseString_thenJsonObjectIsExpected() {
    JsonObject jsonObjectAlt = JsonParser.parseString(jsonString).getAsJsonObject();
    assertEquals(expectedJsonObject, jsonObjectAlt);
}

在本測試方法中,我們驗證解析後的 jsonObjectAlt 與之前創建的 expectedJsonObject 是否匹配。

3.2. 從 StringReader

當獲取的 JSON 數據來自 StringReader 時,可以使用 parseReader() 靜態方法,在不使用過時組件的情況下獲得相同結果:

@Test
public void givenJsonString_whenUsingParseReader_thenJsonObjectIsExpected() {
    StringReader reader = new StringReader(jsonString);
    JsonObject jsonObject = JsonParser.parseReader(reader).getAsJsonObject();
    assertEquals(expectedJsonObject, jsonObject);
}

在這裏,我們初始化一個名為 StringReader 的對象 reader。然後,我們使用 JsonParser.parseReader() 方法將 JSON 數據解析為 JsonObject

3.3. 從 JsonReader

當處理 JsonReader,使用靜態方法 parseReader() 仍然是一個有效且現代的選擇,避免了過時的構造。 讓我們來看一個例子:

@Test
public void givenJsonReader_whenParseUsingJsonReader_thenJsonObjectIsExpected() {
    JsonReader jsonReader = new JsonReader(new StringReader(jsonString));
    JsonObject jsonObject = JsonParser.parseReader(jsonReader).getAsJsonObject();
    assertEquals(expectedJsonObject, jsonObject);
}

在上述測試方法中,我們首先通過實例化一個名為 JsonReader 的對象 jsonReader,並傳入 JSON 字符串的內容。然後,我們使用 JsonParser.parseReader() 方法將該 JSON 數據解析為 JsonObject

4. 結論

綜上所述,<em JsonParser </em>> 已被棄用,Gson 類提供了諸如 <em parseString() </em>><em parseReader() </em>><em parseJson() </em>> 等優秀的靜態方法作為替代。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.