読者です 読者をやめる 読者になる 読者になる

JSONをURLLoaderで受け取るときはTEXTとして受け取ってしまうと日本語にdecodeできなくなる

ActionScript AIR

苦労しましたが、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に移行してしまうところでした。
ふう。。。