Вывод данных через json

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Dima22007
Сообщения: 88
Зарегистрирован: 28 фев 2012, 19:16

Вывод данных через json

Сообщение Dima22007 »

Коллеги, у меня есть вопрос: Как вывести правильно данные через JSON

Вот у меня есть код:

Код: Выделить всё

import com.adobe.serialization.json.JSON;

Код: Выделить всё

var codestr='return[API.users.get({uids:'+viewer_id+',fields:"first_name, photo_50, last_name, photo_100, bdate, photo_200_orig, city, country, sex"}), API.getUserSettings({uid:'+viewer_id+'}),API.friends.get({uid:'+viewer_id+',fields:"uid, first_name, photo_rec, photo_medium_rec, last_name, bdate, sex"})];';              VK.api('execute',{code:codestr},onProfileLoaded, offProfileLoaded);                        function onProfileLoaded(response: Object):void                   {                    var loader:URLLoader = new URLLoader();                                     var request:URLRequest = new URLRequest("");                    request.method = URLRequestMethod.POST;                    var vars:URLVariables = new URLVariables();                    vars['do'] = "init";                    vars['viewer_id'] = viewer_id;                    vars['aftor'] =  response[0][0]['first_name'] + " " +  response[0][0]['last_name'] ;                     vars['photo_rec'] = response[0][0]['photo_50'];                     vars['photo_medium_rec'] = response[0][0]['photo_100'];                     vars['city'] = response[0][0]['city'];                     vars['sex'] = response[0][0]['sex'];                    request.data = vars;                    loader.addEventListener(Event.COMPLETE,onSuccess);                    loader.load(request);                    function onSuccess(response: Object):void                    {                        var jsonObj:Object = com.adobe.serialization.json.JSON.decode(loader.data);                        inter.money_txt = jsonObj['response'].money;                        inter.gold_txt = jsonObj['response'].gold;                    }                }
Пробую выводить так, но ничего не получается. Ответ от сервера приходит такой:

Код: Выделить всё

"response": {        "money": "1000",        "gold": "10"    }
Апчхи
Сообщения: 79
Зарегистрирован: 26 авг 2013, 23:12

Re: Вывод данных через json

Сообщение Апчхи »

Если выводить данные из php скрипта:

Код: Выделить всё

echo json_encode(array($mainrowMoney, $mainrowDosvid, $mainrowVbiv, $mainrowZD, $mainrowGittya, $mainrowShvidkist, $mainrowPm, $mainrowAps, $mainrowPmm12, $mainrowDe50, $mainrowPpkedr, $mainrowMp5k, $mainrowKacpdw));
Приём данных в as3

Код: Выделить всё

var moneyPersonaja:Number;var dosvidPersonaja:Number;var vbivPersonaja:Number;var zaprosiv_dryziv:Number;var gittya:Number;var shvidkist:Number;var lvlPersonaja:Number;var pmPersonaja:Number;var apsPersonaja:Number;var pmm12Personaja:Number;var de50Personaja:Number;var ppkedrPersonaja:Number;var mp5kPersonaja:Number;var kacpdwPersonaja:Number;var vinagoroda:Number; function onServerComplete(e:Event):void{        var obj:Object = JSON.parse(e.target.data); // принимаем загруженные данные и декодируем        moneyPersonaja = obj[0].money;// берем декодированный obj, а из него переменную        dosvidPersonaja = obj[1].dosvid;        vbivPersonaja = obj[2].vbiv;        zaprosiv_dryziv = obj[3].zaprosiv_dryziv;        gittya = obj[4].gittya;        shvidkist = obj[5].shvidkist;        pmPersonaja = obj[6].pm;        apsPersonaja = obj[7].aps;        pmm12Personaja = obj[8].pmm12;        de50Personaja = obj[9].de50;        ppkedrPersonaja = obj[10].ppkedr;        mp5kPersonaja = obj[11].mp5k;        kacpdwPersonaja = obj[12].kacpdw;        vinagoroda = obj[13].vinagoroda;        lvlPersonaja = 1;        e.currentTarget.removeEventListener(Event.COMPLETE, onServerComplete);        e.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR, onServerError);}
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Вывод данных через json

Сообщение sasha^ »

скорее всего loader в слушателе не входит в область видимости.. иди выведи в глобальную или сделай переменной класса или обратись через response (аргумент ф-ции). типа: loader.target.data(возможно не правильно. давно не програмил на флеш)
Dima22007
Сообщения: 88
Зарегистрирован: 28 фев 2012, 19:16

Re: Вывод данных через json

Сообщение Dima22007 »

Ругается на эту строчку -

Код: Выделить всё

var jsonObj:Object = JSON.parse(e.target.data);
пишет - 1000: Неоднозначная ссылка на JSON.
1061: Обращение к возможно неопределенному методу parse через ссылку статического типа Class.
Dima22007
Сообщения: 88
Зарегистрирован: 28 фев 2012, 19:16

Re: Вывод данных через json

Сообщение Dima22007 »

Я решил проблему, надо было тут сделать так:

Код: Выделить всё

mon = jsonObj['response'].money;                        gold = jsonObj['response'].gold;                        inter.money_txt.text = String(mon);                        inter.gold_txt.text = String(gold);
Ответить