如何在 Java 中将 JSON 转换为 Map
我们将介绍如何在 Java 中将现有的 JSON 转换为 Map。JSON 经常被用来结构化数据,但有时我们必须将 JSON 值转换成其他数据类型,然后再对其进行处理。
Java 中创建了几个库来处理 JSON。我们将看到两个最常用的 JSON 解析库,它们允许我们进行许多 JSON 操作。
下面是我们将在本教程中工作的 JSON,以便更好地理解。
{
"login" :
{
"userName" : "John Doe",
"email" : "johndoe@john.com"
}
}
Java 中 Jackson
库将 JSON
转化为 Map
我们必须在我们的项目中加入下面的依赖关系,这样才能继承 Jackson
库的方法和类。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.2</version>
<scope>compile</scope>
</dependency>
添加依赖关系后,我们将首先使用 FileInputStream()
方法获取本地 JSON 文件。
我们需要调用 Jackson
库中的 ObjectMapper().readValue()
来将我们的 JSON
转换为 Map
。readValue(JSON, ClassType)
函数需要两个参数,即 JSON
和我们希望 JSON 被格式化的 ClassType
。由于我们要将 JSON 转换为 Map 格式,我们将使用 Hashmap.class
作为 ClassType
。
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws IOException {
InputStream getLocalJsonFile = new FileInputStream("/sample.json");
HashMap<String,Object> jsonMap = new ObjectMapper().readValue(getLocalJsonFile, HashMap.class);
System.out.println(jsonMap);
}
}
输出:
{login={userName=John Doe, email=johndoe@john.com}}
Java 中 GSON
库将 JSON
转换为 Map
首先,我们必须包含我们项目的依赖性,以在我们的应用程序中包含所有的 GSON 方法和类。
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
GSON
是一个广泛使用的 JSON 库,我们将对其进行解析并转换成 Java Map。
Gson().fromJson(json, type)
需要两个参数,其中一个是 JSON 文件,我们可以通过使用 new JsonReader(new FileReader(jsonFilePath))
获得,第二个参数是我们希望 JSON 的类型。我们将使用 TypeToken<>
来实现。
请看下面的例子。
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
JsonReader getLocalJsonFile = new JsonReader(new FileReader("/sample.json"));
Type mapTokenType = new TypeToken<Map<String, Map>>(){}.getType();
Map<String, String[]> jsonMap = new Gson().fromJson(getLocalJsonFile, mapTokenType);
System.out.println(jsonMap);
}
}
输出:
{login={userName=John Doe, email=johndoe@john.com}}
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn相关文章 - Java JSON
- 在 Java 中处理 JSON 数组
- 在 Java 中将 XML 转换为 JSON
- 将 JSON 转换为 Java 对象
- 在 Java 中将 JSON 转换为 XML
- 在 Java 中读取 JSON 文件
- 在 Java 中解析 JSON