如何在 Java 中将 JSON 转换为 Map

  1. Java 中 Jackson 库将 JSON 转化为 Map
  2. Java 中 GSON 库将 JSON 转换为 Map

我们将介绍如何在 Java 中将现有的 JSON 转换为 Map。JSON 经常被用来结构化数据,但有时我们必须将 JSON 值转换成其他数据类型,然后再对其进行处理。

Java 中创建了几个库来处理 JSON。我们将看到两个最常用的 JSON 解析库,它们允许我们进行许多 JSON 操作。

下面是我们将在本教程中工作的 JSON,以便更好地理解。

{
  "login" :
  {
    "userName" : "John Doe",
    "email" : "[email protected]"
  }
}

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 转换为 MapreadValue(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 protected]}}

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 protected]}}

相关文章 - Java JSON

  • 如何在 Java 中把 Hashmap 转换为 JSON 对象
  • 相关文章 - Java Map

    comments powered by Disqus