1. Overview
1.概述
When working with JSON in Java using the Gson library, we have several options at our disposal for converting raw JSON into other classes or data structures that we can work with more easily.
在Java中使用Gson库处理JSON时,我们有几个选项可以将原始JSON转换为我们可以更容易处理的其他类或数据结构。
For example, we can convert JSON strings to a Map<String, Object> or create a custom class with mappings. However, sometimes it’s handy to be able to convert our JSON into a generic object.
例如,我们可以将JSON字符串转换为Map<String, Object>或者创建一个具有映射的自定义类。然而,有时能够将我们的JSON转换为一个通用对象是很方便的。
In this tutorial, we’ll learn how Gson can give us a JsonObject from a String.
在本教程中,我们将学习Gson如何从字符串中给我们一个JsonObject 。
2. Maven Dependency
2.Maven的依赖性
First, we’ll need to include the gson dependency in our pom.xml:
首先,我们需要在我们的pom.xml中包含gson依赖。
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
We can find the latest version of gson on Maven Central.
我们可以在Maven Central上找到最新版本的gson。
3. Using JsonParser
3.使用JsonParser
The first approach we’ll examine for converting a JSON String to a JsonObject is a two-step process that uses the JsonParser class.
我们将研究的第一种将JSON String转换为JsonObject的方法是使用JsonParser类的两步过程。
For the first step, we need to parse our original String.
对于第一步,我们需要解析我们的原始String。
Gson provides us with a parser called JsonParser, which parses the specified JSON String into a parse tree of JsonElements:
Gson为我们提供了一个名为JsonParser的解析器,它将指定的JSONString解析为一个JsonElements的解析树。
public JsonElement parse(String json) throws JsonSyntaxException
Once we have our String parsed in a JsonElement tree, we’ll use the getAsJsonObject() method, which will return the desired result.
一旦我们在JsonElement树中解析了我们的String,我们将使用getAsJsonObject()方法,这将返回所需的结果。
Let’s see how we get our final JsonObject:
让我们看看我们是如何得到最终的JsonObject的。
String json = "{ \"name\": \"Baeldung\", \"java\": true }";
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
Assert.assertTrue(jsonObject.isJsonObject());
Assert.assertTrue(jsonObject.get("name").getAsString().equals("Baeldung"));
Assert.assertTrue(jsonObject.get("java").getAsBoolean() == true);
4. Using fromJson
4.使用fromJson
In our second approach, we’ll see how to create a Gson instance and use the fromJson method. This method deserializes the specified JSON String into an object of the specified class:
在我们的第二个方法中,我们将看到如何创建一个Gson实例并使用fromJson方法。该方法将指定的JSONString反序列化为指定类的对象。
public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException
Let’s see how we can use this method to parse our JSON String, passing the JsonObject class as the second parameter:
让我们看看如何使用这个方法来解析我们的JSON String,传递JsonObject类作为第二个参数。
String json = "{ \"name\": \"Baeldung\", \"java\": true }";
JsonObject convertedObject = new Gson().fromJson(json, JsonObject.class);
Assert.assertTrue(convertedObject.isJsonObject());
Assert.assertTrue(convertedObject.get("name").getAsString().equals("Baeldung"));
Assert.assertTrue(convertedObject.get("java").getAsBoolean() == true);
5. Conclusion
5.结论
In this brief article, we learned two different ways to use the Gson library to get a JsonObject from a JSON-formatted String in Java. We should use the one that fits better with our intermediate JSON operations.
在这篇简短的文章中,我们学习了两种不同的方法来使用Gson库从Java中的JSON格式的String中获得JsonObject。我们应该使用更适合我们中间JSON操作的那一种。
As usual, the source code for these examples is available over on GitHub.
像往常一样,这些例子的源代码可以在GitHub上找到over。