JSON(json.as)でFlex/Flashアプリケーションにデータを交換する

Flex/Flashでのウェブアプリケーションでは、サーバサイドとデータの交換は必ず必要なので、同じのデータ情報に対して、少ないデータ量で取れるとウェブアプリケーションにもスピードアップできます。今回紹介する「JSON」では、XMLよりも少ないデータ量でFLASHとサーバサイドスクリプト間のデータのやりとりを可能にできます。

JSONとは,構造化されたデータを記述するための,テキスト・ベースのデータ記述言語の一つです。JavaScript(ECMAScript)でオブジェクト・リテラルを記述する構文をそのまま使っているため,人間が読んでわかりやすく,プログラムでも容易に処理できるという特徴があります。

XMLより軽量なJSONはまさにこのような用途に適した形式です。例えば,Webアプリケーションのクライアント構築で盛んに使われるようになった「Ajax」は,もともとXMLデータをページ遷移と非同期にやり取りしていく形態を指していましたが,現在はXMLの代わりにJSONを使うケースが増えています。

JSONの構文などの概要は,「Introducing JSON」というWebサイトに各国語でまとめられています。

JavaScriptプログラム中でこのJSON形式データを処理するには,evalメソッドを使います。evalメソッドは,引数として与えた文字列をJavaScriptプログラムとして解釈するメソッドで,JSON形式の文字列をオブジェクトにしてくれます。

JSONとして情報をやりとりするには「JSON.as」(公式ページからダウンロードできる)を利用します。 巷のサイトの中では#includeを使ってやってるところもありますが、ActionScript2.0ではエラーが起こりますので、importを使って読み込みます。

import JSON;   //埋め込みたいFlashファイルと同階層に「JSON.as」を配置します。

これでJSONクラスを扱うことができるようになります。JSON式のデータの記法は、複数の要素は配列でまとめ、要素内はオブジェクトでまとめます。かんたんに書くと以下のようになります。

[{“属性名1″:”属性値1”}, {“属性名2″:”属性値2”},…]

以下のソースの様で、JSON文字列をパースし、扱いやすい配列に変換してみます。


import JSON;
jsonstr = ‘[{“myprop1″:”myvalue1”},{“myprop2″:”myvalue2”}]’;
jsonlist = JSON.parse(jsonstr);
this.stop();

逆にFlash上の配列やオブジェクトをJSON文字列にする方法は以下のようにstringify関数を実行します。


myObj1 = new Object();
myObj1.myprop1 = “myvalue1″;
myObj2 = new Object();
myObj2.myprop2 = “myvalue2″;
myArray = Array(myObj1, myObj2);
jsonstring = JSON.stringify(myArray);

関連リンク

http://www.json.org/   公式ページ

http://www.ironhearts.com/diary/archives/001338.html    PHPからJSONでFlashにデータを渡す

Leave a Reply

Your email address will not be published. Required fields are marked *