Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでJacksonを使ってJSON配列をリスト(List)に変換する方法

Jacksonライブラリとは

JacksonはJavaベースのライブラリで、JavaオブジェクトをJSONに変換したり、その逆にJSONをJavaオブジェクトに変換したりする際に非常に便利です。Jackson APIは他のAPIと比べて処理速度が速く、必要なメモリ領域も少ないため、大規模なオブジェクトの処理にも適しています。

ObjectMapperクラスでJSON配列をリストに変換する

JSON配列をリストに変換するには、ObjectMapperクラスを使用します。このクラスにはreadValue()という便利なメソッドが用意されており、第1引数にJSON文字列を渡し、第2引数に変換先のクラスを指定するだけで、簡単にデシリアライズ(JSONからJavaオブジェクトへの変換)が行えます。

コード例

import java.util.*;
import com.fasterxml.jackson.databind.*;

public class JSONArrayToListTest1 {
    public static void main(String args[]) {
        String jsonStr = "[\"INDIA\", \"AUSTRALIA\", \"ENGLAND\", \"SOUTH AFRICA\", \"WEST INDIES\"]";
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            List<String> countries = objectMapper.readValue(jsonStr, List.class);
            System.out.println("The countries are:\n " + countries);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

実行結果

The countries are:
[INDIA, AUSTRALIA, ENGLAND, SOUTH AFRICA, WEST INDIES]

補足:TypeReferenceを使った型安全な変換

上記の例ではList.classを直接指定していますが、より型安全に変換したい場合は、TypeReferenceを使用する方法が推奨されます。ジェネリクスの型情報はコンパイル時に消去されるため、TypeReferenceで明示的に型を指定すると、意図しない型の要素が混入するのを防げます。

import java.util.*;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;

public class JSONArrayToListTest2 {
    public static void main(String args[]) {
        String jsonStr = "[\"INDIA\", \"AUSTRALIA\", \"ENGLAND\", \"SOUTH AFRICA\", \"WEST INDIES\"]";
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            List<String> countries = objectMapper.readValue(
                jsonStr, new TypeReference<List<String>>() {});
            System.out.println("The countries are:\n " + countries);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

このように、JacksonのObjectMapperクラスを活用すれば、JSON配列からJavaのリストへの変換をわずか数行のコードで実現できます。APIレスポンスの解析や設定ファイルの読み込みなど、さまざまな場面で活用できる基本的なテクニックなので、ぜひ覚えておきましょう。

  1. Javaで文字配列をリーダー(Reader)に変換する方法を徹底解説

    Javaでは、CharArrayReaderクラスを使用することで、文字配列をリーダー(Reader)として扱うことができます。CharArrayReaderはReaderクラスのサブクラスであり、文字入力ストリームとして利用可能な文字バッファを実装しています。このクラスを使うと、メモリ上の文字配列から、開始位置(オフセット)を指定して全てまたは一部の文字を読み取ることができます。ファイルやネットワーク経由ではなく、プログラム内のデータをストリームとして処理したい場合に非常に便利です。CharArrayReaderの主なメソッドclose():ストリームを閉じ、関連するリソースを解放しますma

  2. JavaでList(リスト)を配列に変換する方法|toArray()とArrays.asList()の使い方

    Javaの開発において、List(リスト)と配列(Array)の相互変換は非常によく使われる基本的な操作です。 Listを配列に変換する最も簡単かつ推奨される方法は、.toArray()メソッドを使うことです。逆に、配列をListに戻したい場合は、Arrays.asList()メソッドを使用します。 以下では、文字列(String)のListや整数(Integer)のListを、それぞれ対応する配列に変換する具体例を紹介します。 String型のListを配列に変換する import java.util.ArrayList; import java.util.List; public cl