PDA

Просмотр полной версии : Динамически переводить строку в объект


AzagThoth
10.11.2011, 00:31
Здравствуйте. Возникла проблемка. Пытаюсь решить уже на протяжении 3х часов.
Скажем есть код:

var str:String = "{a:5, b:10}";

Как мне теперь это перевести в объект? Скажем я хочу cохранить объект в переменной "obj" и обращаться к получившимся у неё свойствам.

trace(obj.a);

Мне это нужно, потому что я бы хотел обрабатывать ответы от сервера в "json". Там как раз такой формат. Только не знаю как сохранить в объекте это :(
Вот например пример ответа:

{"error":{"error_code":101,"error_msg":"Invalid application API ID","request_params":[{"key":"api_id","value":"undefined"},{"key":"fields","value":"uid, first_name, last_name"},{"key":"format","value":"json"},{"key":"method","value":"getProfiles"},{"key":"test_mode","value":"1"},{"key":"uids","value":"undefined"},{"key":"v","value":"3.0"},{"key":"sig","value":"fe38912e0dc343038b5a4acbac3a4d78"},{"key":"sid","value":"undefined"}]}}

Как загнать это в объект ума не приложу.

Если кто-то знает. Подскажите пожалуйста.

Котяра
10.11.2011, 00:38
Json encoders из библиотеки blooddy или corelib

AzagThoth
10.11.2011, 00:43
Куда копать? Справочник молчит об этом. Гугл не гуглит.
Нашёл такое. http://www.openjs.com/scripts/data/json_encode.php
Но это явно не то. Здесь использованы прямо в коде именно объекты, объявленные при помощи литералов объектов.
А у меня же строки.

Добавлено через 2 минуты
Это

var json_data_object = eval("(" + json_string + ")");

Не помогает.


var str:String = "{a:5, b:10}";
trace(eval("(" +str+ ")"));//в Output undefined


Добавлено через 3 минуты
var str:String = "{a:5, b:10}";
trace(eval(str));//в Output undefined

Котяра
10.11.2011, 01:02
http://yandex.ru/yandsearch?text=blooddy+json&clid=139040&yasoft=chrome&lr=213
http://yandex.ru/yandsearch?text=corelib+json&clid=139040&lr=213
ну вроде большой мальчик..
PS сорри - не увидел что про as2
тогда тут (http://www.flasher.ru/forum/showthread.php?t=142563).

AzagThoth
10.11.2011, 01:16
Большое спасибо.