![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Зачем вам JSON, если у вас уже всё и так хорошо. Вы просто не то выводили в своём примере.
Вы здесь пытались вывести значение каждого поля объекта customers[i]. А вам нужно только поле "name". Caseyrayan, ерунду-то не советуйте.
__________________
Будь проще. |
|
|||||
|
Регистрация: May 2014
Сообщений: 8
|
Цитата:
Так я понял, что в том коде я получаю доступ к каждому полю. Но у меня не получается достучаться до поля name. Поэтому и спрашиваю, как сделать. |
|
|||||
|
Если на входе строка то парсите JSON'ом. Получаете объект - массив.
Ваша изначальная ошибка была, что вы проходите циклом по customers и начинаете выводить все поля (цикл for each), вместо того чтобы обратиться к свойству customers[i] напрямую: customers[i]["name"]
__________________
Будь проще. |
|
|||||
|
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
var array:Array = [ { "name":"John", "email":"john@gmail.com" }, { "name":"Andrew", "email":"andrew@gmail.com" } ]; var length:int = array.length; for (var i:int = 0; i < length; i++) trace(array[i].name); var string:String = '[ { "name":"John", "email":"john@gmail.com" }, { "name":"Andrew", "email":"andrew@gmail.com" } ]'; var json:Object = JSON.parse(string); for (var key:String in json) trace(json[key].name); |
|
|||||
|
То что вы писали в 12:29
Цитата:
__________________
Будь проще. |
|
|||||
|
Регистрация: May 2014
Сообщений: 8
|
Если оставить customers, как массив, то в таком случае при выводе значений
var customers:Array = [{"name":"John","email":"john@gmail.com"},{"name":"Andrew","email":"andrew@gmail.com"}]; for (var i:int = 0; i < length; i++) { trace(customers[i].name); // Выдает undefined trace(customers[i]["name"]); // Выдает undefined } |
|
|||||
|
Тему пролистал по диагонали.
Вот мой вариант (с использованием первоначальных данных) public class SkyBoyTest { private static const EMAIL_PROP_NAME:String = "email"; private static const NAME_PROP_NAME:String = "name"; private var customers:Array = [{"name":"John","email":"john@gmail.com"},{"name":"Andrew","email":"andrew@gmail.com"}]; public function SkyBoyTest() { var customerNames:Vector.<String> = getCustomersNames(); for each(var name:String in customerNames) { var email:String = getCustomerEmailByName(name); trace("customer. name : " + name + ", email : " + email); } } public function getCustomersNames():Vector.<String> { var names:Vector.<String> = new Vector.<String>(); for each(var customer:Object in customers) { if(NAME_PROP_NAME in customer) { var name:String = customer[NAME_PROP_NAME]; names.push(name); } } return names; } public function getCustomerByName(name:String):Object { for each(var customer:Object in customers) { if(customer[NAME_PROP_NAME] == name) { return customer; } } return null; } public function getCustomerEmailByName(name:String):String { var customer:Object = getCustomerByName(name); var email:String = customer ? customer[EMAIL_PROP_NAME] : null; return email; } } Хотя лично я распарсил бы этих кастомеров в типизированные объекты.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
|
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
Цитата:
|
|
|||||
|
В чем ерунда? Ваш совет не меньшая ерунда. См. второй пост, прежде чем советовать это
Цитата:
Проблема вообще элементарная. Решается за 20 секунд, если знать что там на самом деле за данные. У меня такой вариант, когда сервер присылает строку типа: Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|