|
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Нумерация в json
var json_str:String = '[ "0":{"slot":"1","item_id":"8","name":"\u0420\u0436\u0430\u0432\u044b\u0439 \u043c\u0435\u0447","price":"25","amount":"1"},"1":{"slot":"1","item_id":"7","name":"\u041a\u043e\u0441\u0442\u0438","price":"100","amount":"2"},"2":{"slot":"2","item_id":"8","name":"\u0420\u0436\u0430\u0432\u044b\u0439 \u043c\u0435\u0447","price":"25","amount":"1"}]'; var test:Array = com.adobe.serialization.json.JSON.decode(json_str); trace(test.length); {"slot":"1","item_id":"8","name":"\u0420\u0436\u0430\u0432\u044b\u0439 \u043c\u0435\u0447","price":"25","amount":"1"},{"slot":"1","item_id":"7","name":"\u041a\u043e\u0441\u0442\u0438","price":"100","amount":"2"},{"slot":"2","item_id":"8","name":"\u0420\u0436\u0430\u0432\u044b\u0439 \u043c\u0435\u0447","price":"25","amount":"1"} |
|
|||||
Ну, не правильная строка от сервера приходит. Кто сервер писал?
Дело тут совсем не в том, что там числа, а в том, что в простом массиве данные через двоеточие на записываются. То есть вместо вот такого: ["0":{"slot":"1","item_id":"8","name":"\u0420\u0436\u0430\u0432\u044b\u0439 \u043c\u0435\u0447","price":"25","amount":"1"}] {"0":{"slot":"1","item_id":"8","name":"\u0420\u0436\u0430\u0432\u044b\u0439 \u043c\u0435\u0447","price":"25","amount":"1"}} Но если к серверу совсем нет никакого доступа, то можно придумать только костыльное решение, например с помощью регулярки var json_str:String = '[ "0":{"slot":"1","item_id":"8","name":"\u0420\u0436\u0430\u0432\u044b\u0439 \u043c\u0435\u0447","price":"25","amount":"1"},"1":{"slot":"1","item_id":"7","name":"\u041a\u043e\u0441\u0442\u0438","price":"100","amount":"2"},"2":{"slot":"2","item_id":"8","name":"\u0420\u0436\u0430\u0432\u044b\u0439 \u043c\u0435\u0447","price":"25","amount":"1"}]'; /* создаем регулярное выражение, которое ищет любое количество чисел, окруженных двойными кавычками, после которых опционально может быть какое-то количество пустых символов, потом двоеточие и потом опять опциональное количество пустых символов. Присваиваем эту выборку переменной $1, так как это первые скобки в регулярке */ var regExp:RegExp = /("\d+"\s*:\s*)/gi; /* дальше заменяем содержимое переменной $1 на нее же, только перед ней ставим фигурную скобку */ json_str = json_str.replace(regExp, "{$1"); /* делаем то же самое для правой части */ regExp = /("}),/gi; json_str = json_str.replace(regExp, "$1},"); /* теперь ищем либо левую квадратную скобку в начале строки, перед которой и после которой так же могут быть опциональные пробелы в любом количестве, либо правую скобку, после которой могут быть опциональные пробелы, а потом сразу конец строки. И заменяем это все на пустые строки */ regExp = /(^\s*\[\s*)|(\]\s*$)/gi; json_str = json_str.replace(regExp, ""); // теперь JSON нормально распарсится trace(api.com.adobe.json.JSON.decode(json_str)); |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
А в чем собственно разница такого
Цитата:
Цитата:
Последний раз редактировалось Godwarlock; 12.03.2015 в 12:08. |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
Разница в том, что первый вариант не правильный. Второй парсится у меня норм, считывается первый элемент тоже.
Массив задается так [{"id":1},{"id":2}]. |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Цитата:
Цитата:
Это строка которую должен отправлять сервер или это у тебя уже декодированая строка? Сори что задаю такие тупые вопросы, джейсон просто до этого не юзал, использовал xml Добавлено через 1 час 20 минут В общем так то разобрался вроде как. Но вот почему Не получается через Array данные выводить. Только через test:Object. Но object мне не подходит, т.к не срабатывает test.length. Добавлено через 1 час 35 минут Всё. Вроде разобрался теперь и с lenght. Кстати как оказалось, всё правильно возвращал сервер, это моя криворукость забыла про скобки) |
|
|||||
Цитата:
Цитата:
Если там php, то в нем проще простого массив перегнать в JSON, через нативный json_encode(), и он точно отдаст правильную строку |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Проблемы нет. Моя оплошность. А можно каким-то образом вывести отдельные json строки? Ну например как то так
<lok_1>json строка</lok_1> <lok_2>json строка</lok_2> <lok_3>json строка</lok_3> А во флеше обращаться к строкам типо того e.target.data.lok_1 e.target.data.lok_2 и т.д |
Часовой пояс GMT +4, время: 23:26. |
|
« Предыдущая тема | Следующая тема » |
|
|