Contents

Gson 中字符串转换为jsonobject

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);