тот же код, что и выше.
в кач-ве JSON декодера/енкодера используется библиотека
blooddy_crypto.swc товарища
BlooDHounD

Код AS3:
import by.blooddy.crypto.serialization.JSON;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.utils.getTimer;
public class JsonVSXml extends Sprite
{
private var json_string:String = '{"firstName": "Иан", "lastName": "Иванов","address": { "streetAddress": "Московское ш., 101, кв.101", "city": "Ленинград", "postalCode": 101101 }, "phoneNumbers": [ "812 123-1234", "916 123-4567" ]}';
private var xml_string: String = '<person><firstName>Иван</firstName><lastName>Иванов</lastName> <address> <streetAddress>Московское ш., 101, кв.101</streetAddress> <city>Ленинград</city> <postalCode>101101</postalCode> </address><phoneNumbers><phoneNumber>812 123-1234</phoneNumber><phoneNumber>916 123-4567</phoneNumber></phoneNumbers></person>';
private var txt:TextField = new TextField();
public function JsonVSXml()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
if (hasEventListener(Event.ADDED_TO_STAGE))
removeEventListener(Event.ADDED_TO_STAGE, init);
addChild(txt);
var i:int = 0;
var iter:int = 10000;
var time:int = getTimer();
for(i = 0 ; i < iter ; i++) calcJSON(json_string);
txt.appendText("json: " + (getTimer() - time) + "ms\n");
time = getTimer();
for(i = 0; i < iter; i++) calcXML(xml_string);
txt.appendText("xml: " + (getTimer() - time) + "ms\n");
}
private function calcJSON(s:String):*
{
return JSON.decode(s);
}
private function calcXML(s:String):XML
{
return new XML(s);
}
}
в release:
json: 288ms
xml: 142ms
в debug:
json: 326ms
xml: 137ms