1. 概述
在使用Gson庫在Java中處理JSON時,我們有多種將原始JSON轉換為可以更輕鬆地進行操作的其他類或數據結構的選擇。
例如,我們可以將JSON字符串轉換為 Map<String, Object> 或創建自定義類並進行映射。但是,有時能夠將JSON轉換為通用對象會很有幫助。
在本教程中,我們將學習如何使用 Gson 能夠從 String 中提供 JsonObject。
2. Maven 依賴
首先,我們需要將 gson 依賴添加到我們的 pom.xml 中:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.11.0</version>
</dependency>我們可以在 Maven Central 上找到 Gson 的最新版本:https://mvnrepository.com/artifact/com.google.code.gson/gson。
3. 使用 JsonParser</h2
我們接下來要研究的一種將 JSON String轉換為 JsonObject的方法是使用兩步過程,它利用了 JsonParser類。
在第一步中,我們需要解析原始的 String。
Gson 提供了我們一個名為 JsonParser的解析器,它會將指定的 JSON String解析為 JsonElements的解析樹:
public static JsonElement parseString(String json) throws JsonSyntaxException一旦我們獲得瞭解析後的 String,並將其存儲在 JsonElement 樹中,我們將會使用 getAsJsonObject() 方法,它將返回所需的結果。
讓我們看看如何獲取最終的 JsonObject:
String json = "{ \"name\": \"Baeldung\", \"java\": true }";
JsonObject jsonObject = JsonParser.parseString(json)
.getAsJsonObject();
assertTrue(jsonObject.isJsonObject());
assertEquals("Baeldung", jsonObject.get("name")
.getAsString());
assertTrue(jsonObject.get("java")
.getAsBoolean());4. 使用 fromJson 方法
在我們的第二種方法中,我們將看到如何創建 Gson 實例並使用 fromJson 方法。此方法將指定的 JSON String 序列化為指定類中的對象:
public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException讓我們看看如何使用這種方法解析我們的 JSON 字符串,並將 JsonObject 類作為第二個參數傳遞:
String json = "{ \"name\": \"Baeldung\", \"java\": true }";
JsonObject convertedObject = new Gson().fromJson(json, JsonObject.class);
assertTrue(convertedObject.isJsonObject());
assertEquals("Baeldung", convertedObject.get("name")
.getAsString());
assertTrue(convertedObject.get("java")
.getAsBoolean());5. 結論
在本文中,我們學習了兩種使用 Gson 庫從 Java 中的 JSON 格式 String 中獲取 JsonObject 的方法。我們應該選擇最適合我們中間 JSON 操作的方法。