気になる開発プロダクツ

第2回 JSON-lib 1.1 - JSON文字列とJavaオブジェクトとの相互変換

この記事を読むのに必要な時間:およそ 4 分

JSON-libの概要

JSON-libは,JavaオブジェクトからJSON形式の文字列を生成したり,その逆の処理を行うJavaライブラリです。Ajaxアプリケーションにおいて,Webブラウザで動作しているJavaScriptのプログラムとサーバ側のプログラムとの間でオブジェクトをやり取りする際に利用できます。JAR形式のファイルをSourceForgeからダウンロード可能です。ライセンスはThe Apache Software License, Version 2.0です。

JDK1.3用(json-lib-1.1-jdk13.jar)とJDK1.5用(json-lib-1.1-jdk15.jar)がありますので,使用するJDKのバージョンに合ったものをダウンロードし,ファイルのパスをクラスパス(CLASSPATH)に設定してください。ここではJDK1.5用による実行例を紹介します。

実際の処理では,これ以外にも以下のライブラリも必要になりますので,合わせてダウンロードし,JARファイルをクラスパスに設定しておいてください。

JSON-libの実行に必要なライブラリ

JSONの概要

JSON-libを紹介する前に,JSON形式の文字列についてふれておきましょう。

Web APIで採用されるJSON

JSON(JavaScript Object Notation)とは,JavaScriptにおいて,オブジェクトの定義を行う際に用いられる表記方法です。RFC4627でも規定されています。このところWeb APIを公開する動きが加速していますが,その処理結果を返す際の形式として,JSONが採用されることが増えてきています。ちなみに,JavaScript関数の引数でJSON形式を用いる場合はJSONP(JSON with Padding)と呼ばれます。

JSON形式で処理結果を返すWeb APIの例

●国内サイト
●海外サイト

JSON形式によるオブジェクトの定義

Ajaxの広がりに伴い公開されるようになったWeb APIは,XML形式で処理結果を返すのが現在は主流です。XMLデータから必要とする部分を取得するには,DOM APIを用いる必要がありますが,メソッドなどの記述がどうしても複雑になりがちです。しかしJSONであれば,文字列からそのままオブジェクトを定義できるため,必要なデータをDOM APIよりも簡便な記述で取得できます。

たとえば,ID番号(id),画像ファイル名(filename)と画像のタイトル(title)という3つのプロパティを持つオブジェクト(data)をJSONで定義すると,以下のようになります。

data = { "id" : 1, "title" : "東京ミッドタウン", "filename" : "midtown01.JPG" };

1つのオブジェクト定義は{}で囲み,: (コロン)を挟む左右のデータで1つのプロパティを表します。プロパティは, (カンマ)で区切られます。この場合はidプロパティの値が1,titleプロパティの値が"東京ミッドタウン"となります。それぞれのプロパティの値を取得するときは,data.id,data.titleなどのように記述します。

1つのオブジェクト定義を, (カンマ)で区切り,複数の定義を[ ]で囲めば,配列を定義できます。以下は2つのオブジェクトを要素とする配列dataを定義する例です。

data = [
  { "id" : 1, "title" : "東京ミッドタウン", "filename" : "midtown01.JPG" },
  { "id" : 2, "title":"新丸ビル", "filename" : "shinmaru01.JPG" }
];

JSONには関数の定義を含めることもできます。以下のcalcオブジェクトには,足し算をするplus関数と,引き算をするminus関数を定義しています。実行結果は,calc.plus(5,3)が8,calc.minus(5,3)が2となります。

calc = {
  "plus"  : function(a, b) {  return a + b;  },
  "minus" : function(a, b) {  return a - b;  }
};

JSON形式の文字列からオブジェクトを生成する場合は,文字列の両端に()を追加してeval関数の引数とし,これを実行します。Ajaxアプリケーションにおいて,Web APIからJSON形式のデータを取得する際に,よく用いられます。

json = '{ "id" : 1, "title" : "東京ミッドタウン" }';
data = eval( '(' + json + ')' );
alert( '画像ID = ' + data.id + ', タイトル = ' + data.title );

著者プロフィール

沖林正紀(おきばやしまさのり)

SE/プログラマを経て,WebアプリケーションやXMLなどについて雑誌記事や書籍の執筆活動を始める。大手メーカで製品資料の作成や,セミナーの講師を担当したこともある。現在は,取材記事や製品レビューなどに執筆活動の幅を広げる一方,プログラミング教材の開発も手がけている。

著書

コメント

コメントの記入