Javaその他

ObjectMapperを利用したJavaBeanオブジェクトとJSON文字列の変換をいろいろ試してみた

ObjectMapperを利用することでJavaBeanオブジェクトとJSON文字列の変換を行うことができるが、変換を行うためには、その変換対象となる変数に、getter/setterメソッドが適切に設定するか、@JsonPropertyアノテーションの付与が必要になる。

今回は、getter/setterメソッドや@JsonPropertyアノテーションの設定内容をいろいろ変えて試してみたので、そのサンプルプログラムを共有する。



前提条件

下記記事の「IntelliJ IDEA上でSpring Bootプロジェクトの読み込み」まで完了していること。

IntelliJ IDEA上でGradleを使ってWeb画面のSpring Bootプロジェクトを作成してみたSpring Bootのプロジェクトを新規作成を「IntelliJ IDEA」のメニューから実施しようとしたところ、無料の「Commun...

サンプルプログラムの内容

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠のうち、「build.gradle」は今回変更したプログラムで、他は新規で作成したプログラムとなる。

「build.gradle」の内容は以下の通り。lombokとObjectMapperを利用できるような設定を追加している。

DemoFormオブジェクトの内容は以下の通り。各変数毎に、getter/setterメソッドの内容や@JsonPropertyアノテーションの内容を変えている。



DemoMainクラスの内容は以下の通り。ObjectMapperクラスのwriteValueAsStringメソッドで、JavaBeanオブジェクトをJSON文字列に変換し、ObjectMapperクラスのreadValueメソッドで、JSON文字列をJavaBeanオブジェクトに変換している。



サンプルプログラムの実行結果

今回のサンプルプログラムの実行結果は以下の通り。
サンプルプログラムの実行結果

getter/setterメソッドのないテスト変数2については、「変換後JSON」の出力が無く、「変換後DemoForm」の設定値がnullになっている。また、複数のgetter/setterメソッドをもつテスト変数4については、「変換後JSON」でtestVal4とtestVal4Subの2種類の出力がされている。

さらに、getter/setterメソッドがあるテスト変数1、@JsonPropertyアノテーションがあるテスト変数3については、「変換後JSON」に出力され、その設定値が「変換後DemoForm」に設定されることが確認できる。

要点まとめ

  • ObjectMapperを利用することでJavaBeanオブジェクトとJSON文字列の変換を行うことができるが、その変換対象となる変数に、getter/setterメソッドが適切に設定するか、@JsonPropertyアノテーションの付与が必要になる。