今回は、ObjectMapperを利用すると、JavaBeanオブジェクトとJSON文字列の変換が簡単に行えることがわかったので、そのサンプルプログラムを共有する。
JSONの形式については、以下のサイトを参照のこと。
https://www.sejuku.net/blog/80617
前提条件
下記記事の「IntelliJ IDEA上でSpring Bootプロジェクトの読み込み」まで完了していること。
IntelliJ IDEA上でGradleを使ってWeb画面のSpring Bootプロジェクトを作成してみたSpring Bootのプロジェクトを新規作成を「IntelliJ IDEA」のメニューから実施しようとしたところ、無料の「Commun...
サンプルプログラムの内容
作成したサンプルプログラムの構成は以下の通り。
なお、上記の赤枠のうち、「build.gradle」は今回変更したプログラムで、他は新規で作成したプログラムとなる。
「build.gradle」の内容は以下の通り。lombokとObjectMapperを利用できるような設定を追加している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | plugins { id 'org.springframework.boot' version '2.1.7.RELEASE' id 'java' } apply plugin: 'io.spring.dependency-management' group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' //lombokを利用するための設定 compileOnly 'org.projectlombok:lombok:1.18.10' annotationProcessor 'org.projectlombok:lombok:1.18.10' //ObjectMapperを利用するための設定 compile 'com.fasterxml.jackson.core:jackson-databind:2.3.4' } |
また、DemoFormオブジェクトの内容は以下の通り。lombokを利用したJavaBeansになっている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package com.example.demo; import lombok.Data; @Data public class DemoForm { /** ID */ private String id; /** 名前 */ private String name; /** 生年月日_年 */ private String birthYear; /** 生年月日_月 */ private String birthMonth; /** 生年月日_日 */ private String birthDay; /** 性別 */ private String sex; /** メモ */ private String memo; } |
「DesignEvo」は多くのテンプレートからロゴを簡単に作成できるツールだった多くのテンプレートが用意されていてロゴを簡単に作成できるツールの一つに、「DesignEvo」があります。今回は、「DesignEvo」...
さらに、DemoMainクラスの内容は以下の通り。ObjectMapperクラスのwriteValueAsStringメソッドで、JavaBeanオブジェクトをJSON文字列に変換し、ObjectMapperクラスのreadValueメソッドで、JSON文字列をJavaBeanオブジェクトに変換している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | package com.example.demo; import com.fasterxml.jackson.databind.ObjectMapper; public class DemoMain { public static void main(String[] args){ // JavaBeanオブジェクト(DemoForm)を生成する DemoForm demoForm = createDemoForm(); System.out.println("変換前DemoForm : " + demoForm.toString()); // JavaBeanオブジェクトとJSONで変換するObjectMapperを生成 ObjectMapper objectMapper = new ObjectMapper(); try{ // JavaBeanオブジェクト(DemoForm)をJSON文字列に変換する String jsonStr = objectMapper.writeValueAsString(demoForm); System.out.println("変換後JSON : " + jsonStr); // JSON文字列をJavaBeanオブジェクト(DemoForm)に変換する DemoForm afterDemoForm = objectMapper.readValue(jsonStr, DemoForm.class); System.out.println("変換後DemoForm : " + afterDemoForm.toString()); }catch (Exception e){ System.err.println(e); } } // DemoFormオブジェクトを生成 private static DemoForm createDemoForm(){ DemoForm demoForm = new DemoForm(); demoForm.setId("1"); demoForm.setName("テスト プリン"); demoForm.setBirthYear("2012"); demoForm.setBirthMonth("1"); demoForm.setBirthDay("15"); demoForm.setSex("2"); demoForm.setMemo("登録用メモ"); return demoForm; } } |
「DemoMain.java」の実行結果は以下の通りで、JavaBeanオブジェクトとJSON文字列の変換が行われていることが確認できる。
要点まとめ
- ObjectMapperクラスのwriteValueAsStringメソッドで、JavaBeanオブジェクトをJSON文字列に変換できる。
- ObjectMapperクラスのreadValueメソッドで、JSON文字列をJavaBeanオブジェクトに変換できる。