JSONで今後はデータのやり取りしようかなと思ってちょっとテスト。
今回はサーバとのやり取りは無しで、記載した文字列から生成。
ASではeval()がマトモに動かないので、JSONの文字列を解析してオブジェクトを生成してあげないといけないけど、そんなことやるのはタイヘン...
そこで、json.orgにて実装されているJSONクラスを利用する。アリガタヤ...
JSONPの利用には対応していないので、{"callBack" : "functionName"}という感じでメソッド名を指定してそれを呼び出すようにすればいいかな。
import JSON;
var target = this;
// テキストエリア内の初期化
this.json_txt.text += '{' + newline;
this.json_txt.text += ' "hoge" : "abc",' + newline;
this.json_txt.text += ' "fuga" : 3,' + newline;
this.json_txt.text += ' "test" : {' + newline;
this.json_txt.text += ' "hoge2" : "abc",' + newline;
this.json_txt.text += ' "fuga2" : 4' + newline;
this.json_txt.text += ' },' + newline;
this.json_txt.text += ' "callBack" : "onAnalyzed"' + newline
this.json_txt.text += '}' + newline;
// ボタンが押されたときの挙動
this.submitButton_mc.onRelease = function() {
try {
var obj = JSON.parse(target.json_txt.text);
var objStr = JSON.stringify(obj);
}
catch (e) {
_root.debug_txt.write(e.name + ":" + e.message + ":" + e.at + ":" + e.text);
return;
}
_root.debug_txt.write(objStr);
target[obj.callBack]();
};
// コールバック関数として指定
this.onAnalyzed = function() {
_root.debug_txt.write('-----call back function called.-----');
_root.debug_txt.write('onAnalyzed');
};
参考)
json.org
json.org | japanese
追記)2007.01.19 18:56
マルチバイトや「{」「[」等の文字もphpのjson_encodeなどのライブラリや組み込み関数を使うときちんとデコード、エンコードされていて問題ない。