JSONとActionscriptとFlashVarsとダブルクォーテーション

JSONとActionscriptとFlashVarsとダブルクォーテーション

イメージ

ActionscriptにJSONでデータを渡す時に、ちょいと引っかかったので備忘録としてエントリ。

1. as3corelibを使って、FlashVars経由でJSONデータを取り込もうとする。

swfObject内記述

so.addVariable('jsonData','{"user":[{"date":"2009/01/01","impression":"20","click":"6","entry":"1"},{"date":"2009/01/03","impression":"200","click":"8","entry":"3"}]}');

Actionscript側はこんな感じ

import com.adobe.serialization.json.JSON;
var flashVars:Object = loaderInfo.parameters;
var json:Object = JSON.decode(flashVars.jsonData);

trace(json["user"][0]["date"])

→結果:ダメ 『{』しか出力されない

2. なんかダブルクォーテーションが怪しいっぽいので、バックスペース(\)でエスケープしてみる。

swfObject内記述

so.addVariable('jsonData','{\"user\":[{\"date\":\"2009/01/01\",\"impression\":\"20\",\"click\":\"6\",\"entry\":\"1\"},{\"date\":\"2009/01/03\",\"impression\":\"200\",\"click\":\"8\",\"entry\":\"3\"}]}');

→結果:ダメ やっぱり『{』しか出ない

3. そもそもJSONの書式が間違ってるんじゃないかと思い、チェックしてみる。

JSONLintでバリデートをかけてみた。

→結果:JSONの書式は問題なし えー。

4. やっぱりダブルクォーテーションが怪しいので、今度は文字参照(")で試してみる。

swfObject内記述

so.addVariable('jsonData','{"user":[{"date":"2009/01/01","impression":"20","click":"6","entry":"1"},{"date":"2009/01/03","impression":"200","click":"8","entry":"3"}]}');

→結果:成功! 『2009/01/01』と出力されました!

なんだコレだけのコトだったのか…
なんかシックリこないケド、とりあえず解決にしました…

その他、JSONの注意事項です。
・シングルクォーテーションはダメ
・16進数はダメ
・小数点はじまりの数値はダメ

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ