Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.05.2014, 13:16
skyboy вне форума Посмотреть профиль Отправить личное сообщение для skyboy Найти все сообщения от skyboy
  № 1  
Ответить с цитированием
skyboy

Регистрация: May 2014
Сообщений: 8
По умолчанию Обход элементов во вложенном ассоциативном массиве

Собственно проблема следующая. У меня есть ассоциативный массив.
Код:
customers = [{"name":"John","email":"john@gmail.com"},{"name":"Andrew","email":"andrew@gmail.com"}]}
Я хочу обратится по ключу name к значениям.
Код AS3:
for (var i:int = 0; i < customers.length; i++)
{
    for each (var value:* in customers[i])
    {
        trace("Names", value);
    }
}
В таком случае выводятся все значения и ключа name и ключа email.
Код:
John
john@gmail.com
Andrew
andrew@gmail.com
А нужны только имена, без email.

Старый 29.05.2014, 13:27
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Код AS3:
 trace("Names", value.name);
__________________
Ко мне можно и нужно обращаться на ты)

Старый 29.05.2014, 13:29
skyboy вне форума Посмотреть профиль Отправить личное сообщение для skyboy Найти все сообщения от skyboy
  № 3  
Ответить с цитированием
skyboy

Регистрация: May 2014
Сообщений: 8
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Код AS3:
 trace("Names", value.name);
UPD: ошибку выдает 1069: Не удалось найти свойство name в String; отсутствует значение по умолчанию.

Старый 29.05.2014, 13:42
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А, значит это не массив, а просто строка. Сначала надо через JSON ее превратить в Object.
Код AS3:
for (var i:int = 0; i < customers.length; i++)
{
    for each (var value:* in customers[i])
    {
        trace("Names", JSON.parse(value).name);
    }
}
__________________
Ко мне можно и нужно обращаться на ты)

Старый 29.05.2014, 13:53
skyboy вне форума Посмотреть профиль Отправить личное сообщение для skyboy Найти все сообщения от skyboy
  № 5  
Ответить с цитированием
skyboy

Регистрация: May 2014
Сообщений: 8
Цитата:
Сообщение от caseyryan Посмотреть сообщение
А, значит это не массив, а просто строка. Сначала надо через JSON ее превратить в Object.
Код AS3:
for (var i:int = 0; i < customers.length; i++)
{
    for each (var value:* in customers[i])
    {
        trace("Names", JSON.parse(value).name);
    }
}
та же ошибка: Error #1069 Не удалось найти свойство name в Number; отсутствует значение по умолчанию. Действительно я пытаюсь обработать json-файл, внутри которого содержатся те ключи, что я выше описал.

Старый 29.05.2014, 14:04
KBAC вне форума Посмотреть профиль Отправить личное сообщение для KBAC Найти все сообщения от KBAC
  № 6  
Ответить с цитированием
KBAC
 
Аватар для KBAC

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
Код AS3:
for (var i:int = 0; i < customers.length; i++)
{
    trace(customers[i]["name"]);
}
__________________
Будь проще.

Старый 29.05.2014, 14:08
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от skyboy Посмотреть сообщение
та же ошибка: Error #1069 Не удалось найти свойство name в Number; отсутствует значение по умолчанию. Действительно я пытаюсь обработать json-файл, внутри которого содержатся те ключи, что я выше описал.
что-то я внимания сразу не обратил. Тут же можно так:
Код AS3:
for (var i:String in customers) {
    var obj:Object = JSON.parse(customers[i]);
    trace(obj.name);
}
Но это при условии, что customers это точно массив, а не строка
__________________
Ко мне можно и нужно обращаться на ты)

Старый 29.05.2014, 14:28
skyboy вне форума Посмотреть профиль Отправить личное сообщение для skyboy Найти все сообщения от skyboy
  № 8  
Ответить с цитированием
skyboy

Регистрация: May 2014
Сообщений: 8
Не в том и не в другом случае данные варианты не работает. customers это все таки строка. Я перепутал.

Старый 29.05.2014, 14:32
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Значит обработать надо сначала customers
Код AS3:
var array:Array = JSON.parse(customers);
for (var i:String in array) {
    var obj:Object = array[i];
    trace(obj.name);
}
__________________
Ко мне можно и нужно обращаться на ты)

Старый 29.05.2014, 14:41
skyboy вне форума Посмотреть профиль Отправить личное сообщение для skyboy Найти все сообщения от skyboy
  № 10  
Ответить с цитированием
skyboy

Регистрация: May 2014
Сообщений: 8
В общем я сделал, как вы написали, но ругается на две строчки
Код AS3:
var customers:String = [{"name":"John","email":"john@gmail.com"},{"name":"Andrew","email":"andrew@gmail.com"}]};
var array:Array = JSON.parse(customers);
for (var i:String in array) {
    var obj:Object = array[i];
    trace(obj.name);
}
на первую строчку: Error 1067 Implicit coercion of a value of type Array to an unrelated type String
вторая строчка: Error 1118 Implicit coercion of a value with static type Object to a possibly unrelated type Array

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:44.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.