使用靜態方法代替已棄用的 JsonParser
一、簡介
當涉及到資料操作和通訊時,高效的 JSON 解析是 Java 程式設計中最重要的任務之一。
Gson 函式庫提供了一個通用的JsonParser
類別來簡化轉換過程。此外,值得注意的是,此類已被棄用,不再需要實例化。相反,我們可以利用提供的靜態方法進行轉換過程。
在本教程中,我們將深入研究如何利用靜態方法而不是已棄用的JsonParser
在 Java 中進行高效的 JSON 解析。
2. 已棄用的JsonParser
以下是使用已棄用的JsonParser
解析 JSON 字串的範例:
String jsonString = "{\"name\": \"John\", \"age\":30, \"city\":\"New York\"}";
已棄用的JsonParser
實例可能仍然有效,但鼓勵開發人員繼續採用新的和改進的實踐。
3.擁抱靜態方法
Gson 函式庫提供靜態方法來取代已棄用的方法。而且,它是一種更優雅、更容易理解的 JSON 解析方式。
讓我們探討一下推薦的靜態方法:
3.1.從String
解析
我們可以使用parseString()
靜態方法將 JSON 字串直接解析為JsonObject
,而無需使用已棄用的JsonParser
實例。
首先,讓我們設定一個描述人員相關資料的 JSON 字串,並使用給定的鍵(如 DeprecatedJsonParserUnitTest 的name
、 age
和city
底層類別建構子)讀取關聯的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");
}
現在,我們將jsonString
直接解析為JsonObject:
@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);
}
在這裡,我們初始化一個名為reader
的StringReader
。然後,我們使用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);
}
在上面的測試方法中,我們首先使用 JSON 字串的內容實例化一個名為jsonReader
的JsonReader
。然後,我們利用JsonParser.parseReader()
方法將此類 JSON 資料解析為JsonObject
。
4。結論
總之, JsonParser
已被棄用,而 Gson 類別提供了優秀的替代靜態方法,例如parseString()
、 parseReader()
和parseJson()
。
與往常一樣,本文的完整程式碼範例可以在 GitHub 上找到。