JavaでObjectをMapに変換する方法

こんにちは、さるまりんです。

以前、JSON文字列からMapに変換する方法について書かせてもらいました。

今回は何かしらのクラスのオブジェクトをMapに変換する方法です。

これにはObjectMapperconvertValue()メソッドを用いて行います。

以下のコードは引数として渡されたオブジェクトをキーがStringMapに変換します。

Map<String, Object> map = new ObjectMapper().convertValue([変換したいオブジェクト], Map.class);

例です。

次のようなクラスがあります。

A.java

public class A {
	int integer;
	String string;

	B b;
}

B.java

public class B {
	int integer;
	String string;
}

(それぞれsetter/getterは省略しています。)

このクラスAのオブジェクトaを作成し、Mapに変換、それを文字列として出力するコードです。

A a = new A();
a.setInteger(10);
a.setString("hello");
B b = new B();
b.setInteger(225);
b.setString("bye!");
a.setB(b);

Map<String, Object> map = new ObjectMapper().convertValue(a, Map.class);

System.out.println("a=" + map.toString());

実行されると次のように出力されます。

a={integer=10, string=hello, b={integer=225, string=bye!}}

それぞれの要素がmapに格納されているのがわかりますね。

受け取ったものがどんなクラスのものかわからない時に中身を確認する時には便利かもしれないです。

読んでくださってありがとうございます。

それではまた!