如何在 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}}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。