Взаимодействие с API ВКонтакте. Обработка JSON-ответов.
Здравствуйте, коллеги.
Ради интереса, решил изучить ВКонтакте API, но достаточно быстро застопорился. Приведу код, а дальше объясню, в чём проблема: Код AS3:
Это приложение заливается в Контакт. Дальше просто запускается. Если приложение "отключено", то в textField'e появляется сообщение "Ошибка", то есть срабатывает функция errorFunc. Если приложение "включено и видно всем", то в текстовом поле появляется "completeFunc сработала". Окей, я в правильном направлении. Но вот как получить доступ к возвращённому функцией значению? Обращаюсь к официальному руководству по API: http://vk.com/pages?oid=-1&p=storage.get Ничего не проясняется... Да, функция возвращает значение. Но в каком виде? Я так понимаю, что в виде переменной экземпляра объекта, который передаётся в мою функцию completeFunc. Возможно ошибка где-то в синтаксисе. Чтобы понять, как правильно обратить к возвращаемому значению я читал: http://www.flasher.ru/forum/showthread.php?t=181260 - эту тему на форуме. Пробовал: Код AS3:
http://vk.com/topic-1_21972158 - искал в этой теме по ключевому слову "storage.get". http://vk.com/topic-2226515_3507340 - искал в этой теме по тому же ключевому слову. Пробовал: vkObj.response vkObj['response'] vkObj.data vkObj.['data'] vkObj[0] В общем что-то ничего не получается. Прошу объяснить мне, что не так и, если возможно, привести работающие примеры. Если что-то из списка выше того, что я пробовал, на самом деле верно, то укажите мне на это. Буду искать у себя ошибку. П.С. И как бы мне просмотреть все переменные экземпляра у объекта и вывести их имена и значения? Добавлено через 19 часов 9 минут Много узнал про JSON, но всё-равно ничего не понимается. Итак, возвращается значение в виде: Код:
{"response":"example"} Внёс изменения в код, чтобы выполнить метод "encode" над vkObj и посмотреть JSON-строку в первоначальном виде: Код AS3:
Цитата:
Почему же выводится просто "example" (да еще и в кавычках), а не {"response":"example"}? Что я делаю не так и как же мне всё-таки получить значение переменной, возвращаемое методом storage.get? |
Коллеги, помогите же мне. Скажите хотя бы, с какого конца следует зайти? Что ещё требуется узнать?
|
Просто responce обрабатывается еще в классе APIConnection и само слово отсекается
"example" у Вас и есть значение переменной "var". В коде все верно. |
Цитата:
Цитата:
Цитата:
Но тогда есть такой вопрос. Как получить значение возвращаемой переменной, которая помещается в мой объект. Можно конечно снова кодировать в JSON-строку, а затем использовать специальную функцию, которая удалит лишние кавычки. Но мне кажется можно как-то получить значение "example" из объекта более элегантным способом. П.С. Прошу прощения за обилие терминологии. Просто хочу, чтобы всё было точно понятно. |
soundy_flash, я не совсем понимаю, что вам нужно. У вас ведь слово "example" уже и есть значение, которое присвоено переменной под названием "var" на сервере контакта.
Напишите вместо "example" что-то другое, и в ответ придет эта строка. storage хранит только строки. Вам никакой Object там не нужен. Можно сделать, так например: Код AS3:
Сам response не нужен потому, что это единственный параметр. Можно возвращать сразу его значение. |
Так точно! Кажется, что я вполне всё понял, после вашего объяснения. Значение "value" тоже задаётся в формате JSON. Соответственно, чтобы получить строку "example" по ключу "response" мне надо написать что-то вроде:
Код AS3:
Цитата:
http://www.json.org/object.gif пары ключ/значение разделяются запятыми. А у вас в коде значения разделяются прямым слешем. В любом случае, спасибо огромное. В самом главном я разобрался. UPD: Начинаю понимать. Сам JSON - это язык чисто для восприятия человеком. То есть если {"response":"example"} передается в некий объект, у объекта не появляется переменной "response" со значением "example". Это стандартизировано только для того, чтобы я, как программист, мог написать утилиты-парсеры для чтения этой строки. |
Цитата:
Джейсон конечно удобнее. Но можно, к примеру, туда и джейсон записать: Код AS3:
Код AS3:
Код AS3:
|
Часовой пояс GMT +4, время: 12:29. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.