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レスポンスの解析や設定ファイルの読み込みなど、さまざまな場面で活用できる基本的なテクニックなので、ぜひ覚えておきましょう。
-
Javaで文字配列をリーダー(Reader)に変換する方法を徹底解説
Javaでは、CharArrayReaderクラスを使用することで、文字配列をリーダー(Reader)として扱うことができます。CharArrayReaderはReaderクラスのサブクラスであり、文字入力ストリームとして利用可能な文字バッファを実装しています。このクラスを使うと、メモリ上の文字配列から、開始位置(オフセット)を指定して全てまたは一部の文字を読み取ることができます。ファイルやネットワーク経由ではなく、プログラム内のデータをストリームとして処理したい場合に非常に便利です。CharArrayReaderの主なメソッドclose():ストリームを閉じ、関連するリソースを解放しますma
-
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