JavaのJacksonという外部ライブラリを使います。Jacksonは、JSONとJavaオブジェクトの相互変換ができるライブラリです。
Jacksonを入手する
以下のサイトにアクセスして、Jacksonのjarファイルを入手します。
入手するファイルは3つです。
- Jackson Databind
- Jackson Core
- Jackson Annotations
ちなみにJackson Databindのダウンロードページは以下のとおりです。
このページのFilesにあるjarをクリックしてjarファイルを入手します。各ページに移動して、最新バージョンのjarファイルを入手します。私が入手したときのバージョンは、2.17.1でした。
ライブラリを配置する
入手したjarファイルを任意のフォルダに配置します。今回は、自分が作業しているフォルダに配置して使います。フォルダの中には、Jacksonライブラリ(jarファイル)と自分が作るJavaファイルが存在ます。
フォルダ構成
仮にtestフォルダを作ったとします。JavaファイルからJacksonライブラリをインポートして使います。
- test
- jackson-annotations-2.17.1.jar
- jackson-core-2.17.1.jar
- jackson-databind-2.17.1.jar
- Test.java
サンプルプログラム
JSON→オブジェクト
// JSON文字列 ⇒ Javaオブジェクト import java.io.*; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonToObject { public static void main(String[] args) throws IOException { String json = "{\"name\":\"Hoge\", \"email\":\"hoge@gmail.com\"}"; ObjectMapper mapper = new ObjectMapper(); Info info = mapper.readValue(json, Info.class); System.out.println(Info.class); // class Info System.out.println(info.name); System.out.println(info.email); } }
public class Info { public String name; public String email; }
コンパイルと実行
// コンパイル javac -cp jackson-core-2.17.1.jar:jackson-databind-2.17.1.jar:jackson-annotations-2.17.1.jar *.java
// 実行 java -cp jackson-core-2.17.1.jar:jackson-databind-2.17.1.jar:jackson-annotations-2.17.1.jar: JsonToObject
// 出力 class Info Hoge hoge@gmail.com
オブジェクト→JSON
// Javaオブジェクト ⇒ JSON文字列 import java.io.*; import com.fasterxml.jackson.databind.ObjectMapper; public class ObjectToJson{ public static void main(String[] args) throws IOException { Info info = new Info(); info.name = "Hoge"; info.email = "hoge@gmail.com"; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(info); System.out.println(json); } }
public class Info { public String name; public String email; }
コンパイルと実行
// コンパイル javac -cp jackson-core-2.17.1.jar:jackson-databind-2.17.1.jar:jackson-annotations-2.17.1.jar *.java
// 実行 java -cp jackson-core-2.17.1.jar:jackson-databind-2.17.1.jar:jackson-annotations-2.17.1.jar: ObjectToJson
// 出力 {"name":"Hoge","email":"hoge@gmail.com"}