如何在 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
- 在 Java 中將 JSON 轉換為 XML
- 將 JSON 轉換為 Java 物件
- 在 Java 中解析 JSON
- 在 Java 中讀取 JSON 檔案