JSFLでjson2.jsライブラリを読みこんだら、すんなり使えたというメモ

WEBブラウザでJavaScriptを組んでいるとJSON.parseやJSON.stringifyがすぐに使えますよね。しかしJSFLで呼んでみたもののそもそも存在していないようです。

そんな中で、JSFLでJSONを扱いたくてjson2.jsライブラリを読みこんでみたら、すんなり使えたというメモです。

素直に実行してみる

実際、素直に書いて実行してみます。

var jsonData = JSON.parse( '{ "test":1234567890 }' );
fl.trace( "jsonData : " + jsonData );
fl.trace( "jsonData.test : " + jsonData.test );
fl.trace( "JSON.stringify : " + JSON.stringify( jsonData ) );

のようなコードを実行すると

以下の JavaScript エラーが発生しました :

ファイル “json_nofunc.jsfl” の 1 行目 :
ReferenceError: JSON is not defined

とそもそもJSONクラスが存在しないよというエラーが出ます。

JSFLもJavascriptがベースなわけでJavascriptのライブラリが使えるのではないか

というわけで、簡単な設定ファイルの読み書きなどにJSONは欲しい。

自前でparser組むのも考えたのですが、JSON.orgのコードを参考にやるものの、良く考えたらJSFLもJavascriptがベースなわけでJavascriptのライブラリが使えるのではないかと思い試してみました。

最初にjson2.jsを取ってくる

今回はjson2.jsを使ってみます。githubから取ってきます。

douglascrockford/JSON-js

上記画面のZIPボタンからダウンロードします。

JSON-js-master.zipがダウンロードできるので、解凍するとこんな感じでフォルダができます。

ここでjson2.jsを取り出せるようにしておきます。

JSFLにjson2.jsを読み込む

続いてJSFLにjson2.jsを読み込む作法です。

ひとまずJSFLを置く

先ほどのJSFLをjson.jsflとして以下のように置きます。

// テストコード
var jsonData = JSON.parse( '{ "test":1234567890 }' );
fl.trace( "jsonData : " + jsonData );
fl.trace( "jsonData.test : " + jsonData.test );
fl.trace( "JSON.stringify : " + JSON.stringify( jsonData ) );

こんな感じで置いておきます。

runScriptを利用してjson2.jsを読み込む。

json2.jsをJSFLと同階層に置いた上で話を進めます。

外部のJavaScriptを読むにはfl.runScriptを使います。

Adobe Flash Professional * fl.runScript()

また、実行されているJSFLのパスを返してくれるfl.scriptURIを利用してJSFLと同階層のjson2.jsを読めるようにします。

Adobe Flash Professional * fl.scriptURI

実際のコードが以下の様な感じ。

// JSONLib読み込み
var path = fl.scriptURI.substr( 0 , fl.scriptURI.lastIndexOf("/") + 1 );
fl.runScript( path + "json2.js" );

というわけで、json.jsflすべてのコード。

json.jsfl

// JSONLib読み込み
var path = fl.scriptURI.substr( 0 , fl.scriptURI.lastIndexOf("/") + 1 );
fl.runScript( path + "json2.js" );

// テストコード
var jsonData = JSON.parse( '{ "test":1234567890 }' );
fl.trace( "jsonData : " + jsonData );
fl.trace( "jsonData.test : " + jsonData.test );
fl.trace( "JSON.stringify : " + JSON.stringify( jsonData ) );

実行してみる

早速、実行してみます。

json.jsfl実行結果

jsonData : [object Object]
jsonData.test : 1234567890
JSON.stringify : {“test”:1234567890}

と結果が出ました。ばっちり!

おわりに

いかがでしたでしょうか。JavaScriptのライブラリがそのまま使えたことが収穫ですね。他にも使えそうなJavaScriptライブラリを取り込んでみるとJSFLでできることの幅が広がると思いました。

また、今回のようにJSONが扱えるようになると設定ファイルの読み書きに使ったり、GoogleSwiffyのようなJSONデータの解析ができたりと、いろいろ夢が広がりますね。

今回のソースコードも以下においておきます。

JSFLダウンロード:json_jsfl.zip
json2.jsflも同梱しようかと思いましたが、ライセンスがよくわからなかったので上記の方法で自分で入れてみてください。

それでは、よき JSFL Life を!