Gson 中字符串转换为jsonobject
Contents
1. 概述
当使用 Gson 库在 Java 中处理 JSON 时,我们有几个选项可供我们将原始 JSON 转换为我们可以更轻松地使用的其他类或数据结构。
例如,我们可以将 JSON 字符串转换为Map<String, Object> 或使用映射创建自定义类 。但是,有时能够将我们的 JSON 转换为通用对象会很方便。
在本教程中,我们将学习Gson 如何从String中给我们一个JsonObject 。
2. Maven依赖
首先,我们需要在pom.xml中包含**gson依赖 项:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
我们可以 在 Maven Central 上找到最新版本的gson。
3. 使用JsonParser
我们将研究将 JSON String转换为JsonObject的第一种方法是使用JsonParser类的两步过程。
第一步,我们需要解析我们的原始String。
Gson 为我们提供了一个名为JsonParser 的解析器,它将指定的 JSON String解析成JsonElements的解析树:
public JsonElement parse(String json) throws JsonSyntaxException
在JsonElement树中解析String后,我们 将使用*getAsJsonObject()*方法,该方法将返回所需的结果。
让我们看看我们如何获得最终的JsonObject:
String json = "{ \"name\": \"Blogdemo\", \"java\": true }";
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
Assert.assertTrue(jsonObject.isJsonObject());
Assert.assertTrue(jsonObject.get("name").getAsString().equals("Blogdemo"));
Assert.assertTrue(jsonObject.get("java").getAsBoolean() == true);
4. 使用fromJson
在我们的第二种方法中,我们将看到如何创建一个Gson实例并使用 fromJson方法。该方法将指定的 JSON String反序列化为指定类的对象:
public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException
让我们看看我们如何使用这个方法来解析我们的 JSON String,传递 JsonObject类作为第二个参数:
String json = "{ \"name\": \"Blogdemo\", \"java\": true }";
JsonObject convertedObject = new Gson().fromJson(json, JsonObject.class);
Assert.assertTrue(convertedObject.isJsonObject());
Assert.assertTrue(convertedObject.get("name").getAsString().equals("Blogdemo"));
Assert.assertTrue(convertedObject.get("java").getAsBoolean() == true);