Java で JSON をマップに変換する方法

Rupam Yadav 2023年10月12日
  1. Java で JSONMap に変換する Jackson ライブラリ
  2. Java で JSONMap に変換するための GSON ライブラリ
Java で JSON をマップに変換する方法

Java で既存の JSON を Map に変換する方法を紹介します。JSON はデータの構造化に使われることが多いですが、JSON の値を何か別のデータ型に取得してから作業をしなければならないこともあります。

Java で JSON を扱うためにいくつかのライブラリが作成されています。ここでは、多くの JSON 操作を行うことができる、最もよく使われている 2つの JSON パースライブラリを見ていきます。

以下は、理解を深めるためにこのチュートリアルで扱う予定の JSON です。

{
  "login" :
  {
    "userName" : "John Doe",
    "email" : "johndoe@john.com"
  }
}

Java で JSONMap に変換する Jackson ライブラリ

Jackson ライブラリのメソッドやクラスを継承できるようにするために、以下の依存関係をプロジェクトに追加する必要があります。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.2</version>
    <scope>compile</scope>
</dependency>

依存関係を追加した後、まず FileInputStream() メソッドを用いてローカルの JSON ファイルを取得します。

JSONMap に変換するには、Jackson ライブラリから ObjectMapper().readValue() を呼び出す必要があります。関数 readValue(JSON, ClassType) は 2つの引数をとり、JSON をフォーマットしたい JSONClassType を指定します。JSONMap 形式に変換したいので、Hashmap.class を利用します。

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 で JSONMap に変換するための GSON ライブラリ

まず、アプリケーションにすべての 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) には 2つの引数が必要です。1つは JSON ファイルで、new JsonReader(new FileReader(jsonFilePath)) で取得することができます。で、2つは JSON を変換したい型です。

以下の例を見てください。

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 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