JSONをURLLoaderで受け取るときはTEXTとして受け取ってしまうと日本語にdecodeできなくなる
苦労しましたが、TEXTとして受け取ってはいけないということがわかりました。
\をマルチバイトの\に自動的に変換されてしまい、
日本語がパースされずにハマります。
BINARYとして受け取り、それをUS-ASCIIとして
文字列に変換してから、JSONパーサーでパースします。
urlLoader.dataFormat=URLLoaderDataFormat.BINARY;
とやって、URLLoaderの受け取るdataを
ByteArrayで受け取るようにしておきます。
urlLoader.addEventListener(Event.COMPLETE,function(event:Event):void{ var bodyArray:ByteArray=event.target.data; var body:String=bodyArray.readMultiByte(bodyArray.length,"us-ascii"); var resultArray:Array=JSON.decode(body).parts; // 自分の処理 });
一旦ByteArrayで受け取って、US-ASCII文字列に変換し、
JSON.decodeでパースしています。
これで無事、日本語を受け取ることができました。
一時はJSONを諦めて、XMLに移行してしまうところでした。
ふう。。。