ASでJSON





this is flash contents.

download source

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などのライブラリや組み込み関数を使うときちんとデコード、エンコードされていて問題ない。


contributor nao : 2007年01月19日 17:11

comment