Adobe AIR:Обработка объектов JSON с сервера
-
09-06-2019 - |
Вопрос
У меня есть сценарий, который извлекает объекты с удаленного сервера посредством вызова Ajax.Сервер возвращает объекты в нотации JSON.
Однако в Adobe AIR существует ограничение на использование оценка() по соображениям безопасности.Таким образом, я могу получать ответы от удаленного сервера, но не могу превратить их обратно в объекты JavaScript.Есть ли какое-либо решение этой проблемы?Я хотел бы использовать JSON для своих объектов JavaScript, поскольку его можно использовать практически сразу.
Примечание :Я понимаю последствия для безопасности такой проблемы, но я буду заниматься быстрой разработкой приложений для конкурса, поэтому программа будет лишь быстрым прототипом и не будет использоваться в производственных целях.Тем не менее, было бы здорово, если бы была лучшая альтернатива тому, что я пытаюсь сделать сейчас.
Обновлять:
Благодаря Тео и jsight за их ответы;
Сегодня я узнал одну важную вещь: я действительно могу использовать библиотеки ActionScript, используя
<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>тег, расширенный Adobe AIR.Проверить Тео ссылка для более подробной информации!
Решение
Вы можете найти Парсер JSON, написанный на JavaScript, здесь (исходный код здесь).Вы также можете использовать анализатор JSON as3corelib из JavaScript, есть описание того, как получить доступ к библиотекам ActionScript из JavaScript, можно найти здесь..
Другие советы
Текущая версия AIR (v2.5) включает в себя более новый WebKit со встроенной поддержкой JSON через JSON.stringify() и JSON.parse().
Вы посмотрели as3corelib?Кажется, он предоставляет анализатор AS3 для данных JSON, и я надеюсь, что он не полагается на eval (как вы заметили, eval, как правило, вреден для безопасности).Существуют аналогичные библиотеки и для Javascript, и они, как правило, являются предпочтительным способом анализа json из-за последствий для безопасности, связанных с вызовом eval для (потенциально) вредоносных данных.
JSON — это нотация объектов Javascript, поэтому, если вы используете Javascript, вы уже там!Посмотрите на эти ссылки, они дают примеры создания объектов Javascript из JSON:
http://www.hunlock.com/blogs/Mastering_JSON_(_JavaScript_Object_Notation_)
http://betterexplained.com/articles/using-json-to-exchange-data/
Если вы решите пойти по пути Flex/AS3, то, как сказал jsight, as3corelib — хорошее место для начала.
Я думаю, что это возможно, если вы используете мост iframe и песочницы.У вас должна быть возможность запускать eval() для загруженного кода в изолированном iframe,
Отрывок из Документация Adobe AIR 1.1"...возможно, будет удобнее запускать контент в изолированном дочернем фрейме, чтобы контент можно было запускать без ограничений на eval()..."
Еще одна статья по теме: Опираясь на AIR:Работа с мостами песочницы