【ハウツー】
JSONはJavaScript Object Notationの略で、JavaScriptでのハッシュとリストの記述法を利用したテキストベースのデータフォーマットだ。JavaScriptではeval()関数でオブジェクトに変換できるなど取り扱いが容易であるため、Ajaxでのデータ交換フォーマットとして利用されることが多い(セキュリティ面の問題から実際にはeval()関数で評価せず、JSONパーサを利用するほうが望ましい)。
JSONICとはJavaオブジェクトとJSONを相互変換するためのオープンソースのライブラリだ。JSONIC以外にもJavaで利用可能なJSONライブラリにはJSON-libなどがあるが、JSONICは使い方が簡単で依存ライブラリもなく、XMLからJSONへの変換や高度な拡張性など、機能面でも優れている。
JSONというとAjaxでのデータのやり取りに使われるデータフォーマットというイメージが強いが、使い方次第ではAjaxを使わないケースでも利用する価値がある。本稿ではJSONICを使ってJavaによるWebアプリケーション開発でJSONを活用する方法を紹介する。なお、本稿の内容は執筆時点の最新版であるJSONIC 0.9.7に基づいている。
JSONICのAPIは非常にシンプルだ。JSONとJavaオブジェクトの変換は、net.arnx.jsonic.JSONのstaticメソッドであるencode()メソッドとdecode()メソッドで行うことができる。encode()メソッドにはJavaBeanのほか、MapやList、配列を渡すことも可能だ。JavaBeanのpublicフィールドはゲッターメソッドがなくてもプロパティとして扱ってくれる。また、staticなゲッタープロパティおよびtransientが付与されたフィールドは変換対象にならない。
import net.arnx.jsonic.JSON;
...
// POJOをJSONに変換
String text = JSON.encode(new Hoge());
// JSONをPOJOに変換
Hoge hoge = JSON.decode(text, Hoge.class);
これだけシンプルだと使い方に迷うことはないだろう。このシンプルさがJSONICの最大の特徴だ。なお、encode()メソッドの第2引数にtrueを指定することで、見やすくフォーマットされたJSONを取得することができる。また、decode()メソッドは文字列だけでなく、ReaderやInputStreamを渡してデコードを行うことも可能だ。また、org.w3c.dom.Documentもしくはorg.w3c.dom.Elementを渡すことでXMLをJSONに変換することもできる。
// POJOをフォーマットされたJSONに変換
String text = JSON.encode(new Hoge(), true);
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
[アニメ質問状]「めだかボックス」 世界観から外れないようにデザイン [13:30 5/26] ホビー |
|
【レポート】【2010年ガチオタ編】成功したと思う歴代深夜アニメランキング [13:00 5/26] ホビー |
|
【連載】今さら人に聞けない!! Photoshopのショートカットキー講座 第26回 クイックマスクモード/画像描画モードの切り替え [13:00 5/26] クリエイティブ |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第102回 今回のお題は…「a variety of」 [12:00 5/26] キャリア |
|
世界最大のアップライトピアノの音色を再現するソフト音源「THE GIANT」 [12:00 5/26] クリエイティブ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。