JavaでJSON
JavaでJSONを扱うことになりそう、とのことで事前学習。
JSONとは?
JSON (JavaScript Object Notation)は、軽量のデータ交換フォーマットです。
JSON http://www.json.org/json-ja.html より
日本語だと、上記URLが一次情報?
JavaでJSON
外部ライブラリを使わずに、JavaでJSONを扱おうとすると、下記URLの実装になるみたいです。
Java SEの標準APIだけでJSONを扱うサンプル(JDK 1.6以降、1.8も対応) - ぐーたら書房
Javaで利用されているJSONの外部ライブラリ
下記2つが主に利用されていそう。
- Jackson
- Jsonic
Jackson
JacksonはJava7以上で利用可能っぽいです。
(Java6だとObjectMapperクラスを呼び出した時点で落ちました。)
一時情報として見るべきWikiは下記URL?
JacksonHome - FasterXML Wiki
Jacksonを利用するに当たって、下記URLを参考にしました。
Jacksonの便利な使い方 [初心者向け] - Qiita
Java Jacksonの基本的な使い方 | 酒と涙とRubyとRailsと
今回動作確認で作成したPOJOは下記Userクラス。
public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
…で動作確認はこんな感じでやりました。
public class JacksonSample { private static ObjectMapper om = new ObjectMapper(); public static void main(String[] args) throws Exception { // POJO→JSON User user1 = new User(); user1.setId(1); user1.setName("HAL"); String json1 = om.writeValueAsString(user1); System.out.println(json1); // JSON→POJO String json2 = "{\"id\":\"2\", \"name\":\"PET\"}"; User user2 = om.readValue(json2, User.class); System.out.println("id:" + user2.getId()); System.out.println("name:" + user2.getName()); } }
Jsonic
先にJsonicの動作確認コードをば。
public class JsonicSample { public static void main(String[] args) { // POJO→JSON User user1 = new User(); user1.setId(1); user1.setName("HAL"); String json1 = JSON.encode(user1); System.out.println(json1); // JSON→POJO String json2 = "{\"id\":\"2\", \"name\":\"PET\"}"; User user2 = JSON.decode(json2, User.class); System.out.println("id:" + user2.getId()); System.out.println("name:" + user2.getName()); } }
JsonicはJava6以上で利用可能です。
Jsonicの一次情報は下記URL。
http://jsonic.osdn.jp/
Jsonic、こんな感じでも使えるよ~ということで、参考になりそうなURLは下記。
Java JSONICでjsonな文字列をオブジェクトに直接デコード - Symfoware
jsonicのlistだけを持つクラスを使いたくない場合 - だましだまし
一次情報をチェックすることを心がけようとしているのですが、やはり英語が多い…。
英語が読めないと厳しいなあと思う、今日この頃…。
あとググる前にダウンロードファイル確認しよう。
Sampleちゃんと入ってたの、あとから気づいた…。
↓↓↓2017/07/30 追記
Javaで利用されているJSONの外部ライブラリとしてもうひとつ、Googleが提供しているGsonを見つけたので、試してみました。
Gsonの一次情報は下記URL。
GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back
動作確認のコードは下記。
public class GsonSample { public static void main(String[] args) { // POJO→JSON User user1 = new User(); user1.setId(1); user1.setName("HAL"); Gson gson = new Gson(); String json1 = gson.toJson(user1); System.out.println(json1); // JSON→POJO String json2 = "{\"id\":\"2\", \"name\":\"PET\"}"; User user2 = gson.fromJson(json2, User.class); System.out.println("id:" + user2.getId()); System.out.println("name:" + user2.getName()); } }
上記のコードを書くにあたって、UserGuideのObject Examplesを参考にしました。
gson/UserGuide.md at master · google/gson · GitHub
基本の使い方は、ほぼほぼ同じみたいですね。