JavaのJacksonライブラリでJSONとMapを相互変換する方法
JacksonはJava向けの高性能なJSON処理ライブラリで、強力なデータバインディング機能を備えています。カスタムJavaオブジェクトをJSONにシリアライズしたり、JSONをJavaオブジェクトにデシリアライズしたりするためのフレームワークを提供します。
JSONとMapの相互変換には、com.fasterxml.jackson.databind.ObjectMapperクラスが提供するreadValue()メソッドとwriteValueAsString()メソッドを使用します。
事前準備:Maven依存関係の追加
Jacksonを使用するには、まずプロジェクトに依存関係を追加します。Mavenの場合は、pom.xmlに以下を記述してください。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.1</version>
</dependency>JSONからMapへの変換
構文
public <T> T readValue(String content, TypeReference valueTypeRef) throws IOException, JsonParseException, JsonMappingException
readValue()メソッドは、JSON文字列を解析し、指定されたTypeReferenceに基づいてJavaオブジェクト(ここではMap)へ変換します。
サンプルコード
import java.io.*;
import java.util.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
public class ConvertJSONToMapTest {
public static void main(String args[]) {
try {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"Name\":\"Raja\", \"Technology\":\"Java\"}";
Map<String, Object> jsonMap = new HashMap<String, Object>();
// JSON文字列をMapに変換
jsonMap = mapper.readValue(jsonString, new TypeReference<Map<String, String>>(){});
System.out.println(jsonMap);
} catch(IOException ie) {
ie.printStackTrace();
}
}
}実行結果
{Name=Raja, Technology=Java}MapからJSONへの変換
構文
public String writeValueAsString(Object value) throws JsonProcessingException
writeValueAsString()メソッドは、任意のJavaオブジェクト(Mapなど)をJSON形式の文字列にシリアライズします。
サンプルコード
import java.io.*;
import java.util.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ConvertMapToJSONTest {
public static void main(String args[]) throws IOException {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "";
Map<String, Object> map = new HashMap<String, Object>();
map.put("Raja", "Java Technology");
map.put("Ravi", "Python Technology");
map.put("Adithya", "Spark Technology");
map.put("Vamsi", "Web Technology");
// MapをJSON文字列に変換
jsonString = mapper.writeValueAsString(map);
System.out.println(jsonString);
}
}実行結果
{"Raja":"Java Technology", "Vamsi":"Web Technology", "Ravi":"Python Technology", "Adithya":"Spark Technology"}まとめ
JacksonのObjectMapperクラスを使えば、readValue()でJSONからMapへ、writeValueAsString()でMapからJSONへと簡単に相互変換できます。TypeReferenceを活用することで、ジェネリクスを含む複雑な型への変換も型安全に実装できるのが大きなメリットです。API通信やデータ処理の場面でぜひ活用してみてください。
-
【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法
GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを
-
JavaのMapをJSONに変換する3つの方法(Jackson・Gson・org.json)
JavaのMap(マップ)をJSONに変換する方法はいくつかあります。Javaでは、配列やMapとJSONの相互変換を行う場面が非常に多く、Web APIとのデータ連携などでも欠かせない処理です。 この記事では、代表的なライブラリであるJackson、Gson、org.jsonを使用して、JavaのMapをJSONに変換する3つの具体例をサンプルコード付きで解説します。 Jacksonを使ってJavaのMapをJSONに変換する 最初の例では、Jackson Core と Jackson Databind を使ってJavaのMapをJSONに変換します。 Jacksonライブラリを使用するには