如何在 Java 中將 JSON 轉換為 Map

Rupam Yadav 2023年1月30日 2020年9月26日
  1. Java 中 Jackson 庫將 JSON 轉化為 Map
  2. Java 中 GSON 庫將 JSON 轉換為 Map
如何在 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 轉換為 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=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}}
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

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 Map