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進数はダメ
・小数点はじまりの数値はダメ