JSON не является нативной структурой для Flex (странно, да? Вы могли бы подумать, что объекты {} могут быть легко сериализованы, но не совсем), как XML.Это означает, что виртуальная машина выполняет XML за кулисами, в то время как строки JSON анализируются и превращаются в объекты посредством манипулирования строками (даже если вы используете AS3CoreLib) ... брутто ... Лично я также видел несоответствияв JSONEncoder (когда-то Массивы были просто индексированными объектами).
Как только данные были преобразованы в объект AS3, поиск и анализ данных в XML все же происходит быстрее, чем с объектами.Выражения XPath делают обход данных приятным (почти достаточно легким, чтобы заставить вас улыбаться по сравнению с другими вещами).
С другой стороны, JS намного лучше разбирает JSON.НАМНОГО, НАМНОГО ЛУЧШЕ.Но, поскольку переход на JavaScript - это «возможно ... когда-нибудь ...», то вы можете подумать: «Будет ли использование JSON в будущем стоить снижения производительности прямо сейчас?»
Но вотвопрос, почему бы просто не иметь два выхода?Поскольку и JS, и AS могут предоставить вам POST с практически произвольным числом переменных, вам действительно нужно только позаботиться о том, как сервер отправляет данные, а не получает их.Вот потенциальный способ справиться с этим:
// as you are about to output:
$type = './outputs/' . $_GET[ 'type' ] . '.php';
if( file_exists( $type ) && strpos( $type, '.', 1 ) === FALSE )
{
include( $type );
echo output_data( $data );
}
else
{
// add a 404 if you like
die();
}
Затем, при получении $ _GET ['type'] == 'js', js.php будет:
function output_data( $data ){ return json_encode( $data ); }
При получении $ _GET ['type'] == 'xml' xml.php будет содержать что-то, у которого output_data вернет строку, представляющую XML (множество примеров здесь )
Конечно, если вы используете фреймворк, то вместо этого вы можете просто сделать что-то подобное с представлением (мое предложение сводится к тому, что «вы должны иметь два разных представления и использовать MVC»).