Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> взять значения массива JSON 
V
    Опции темы
Samotnik
Дата 17.3.2008, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



САБЖ!
С сервера приходит сформированный JSON массив.  Такого вида
Код

var config=[{"id":16,"props":{
"imgArray":[
"{'link':'controller/ShowAction?userid=3&fileid[80]&moduleid=16' ,'description': '[blue hills ]'}",
"{'link':'controller/ShowAction?userid=3&fileid[83]&moduleid=16' ,'description': '[sunset]'}",
"{'link':'controller/ShowAction?userid=3&fileid[82]&moduleid=16' ,'description': '[water]'}",
"{'link':'controller/ShowAction?userid=3&fileid[81]&moduleid=16' ,'description': '[winter]'}"],
"mode":"1"}}]

Мне нужно все значения  link   записать  в одигн массив,   а все значения  description  в  другой ! 
Вот так вот я  выбираю сам массив 
Код

 var conf = getModuleConfig(this.id);
 this.ImageArray = conf.imgArray;

Т.е.  в this.ImageArray  лежит  массив  imgArray  и вот из этого массива, мне нужно взять отдельно значения  link  и description
 smile 

Это сообщение отредактировал(а) Samotnik - 17.3.2008, 18:48
PM MAIL   Вверх
dsCode
Дата 17.3.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 1
Всего: 26



Samotnik,

- создать два пустых массива var links = []; и var descriptions = [];
- пройтись циклом по массиву this.ImageArray
- в массив links добавлять this.ImageArray[k].link, в массив descriptions - this.ImageArray[k].description


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
Sardar
Дата 17.3.2008, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



dsCode, там не объект и подсветка это подтверждает. Зачем нужно было оборачивать это в двойные кавычки... Samotnik, ты с каждым разом удивляешь всё больше smile

По теме (добавим eval к коду dsCode):
Код
for(var i=0; i < this.ImageArray.length; i++) {
  var row = eval(this.ImageArray[i]);
  alert(row.link);
  alert(row.description);
}




--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Samotnik
Дата 18.3.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



По САБЖ
не работает !
пишу
Код

  var conf = getModuleConfig(this.id);
   this.ImageArray = conf.imgArray;
  for(var i=0; i < this.ImageArray.length; i++) {
   var row = eval(this.ImageArray[i]);
   alert(row.link);
   alert(row.description);
}

выдает
Цитата

invalid label
[Break on this error] {'link':'controller/ShowAction?userid=3&fileid[80]&moduleid=16' ,'descripti...


Это сообщение отредактировал(а) Sardar - 18.3.2008, 21:51
PM MAIL   Вверх
Fortop
Дата 18.3.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



1. Уже писал Sardar

Код

var config=[{"id":16,"props":{
"imgArray":[
{'link':'controller/ShowAction?userid=3&fileid[80]&moduleid=16' ,'description': '[blue hills ]'},
{'link':'controller/ShowAction?userid=3&fileid[83]&moduleid=16' ,'description': '[sunset]'},
{'link':'controller/ShowAction?userid=3&fileid[82]&moduleid=16' ,'description': '[water]'},
{'link':'controller/ShowAction?userid=3&fileid[81]&moduleid=16' ,'description': '[winter]'}],
"mode":"1"}}]


2.
Код

   this.ImageArray = config[0].props.imgArray;


3. Если и это не работает. Посмотри какой структуры у тебя приходит JSON.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Samotnik
Дата 18.3.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Понимаете, все дело в том, что я не ставлю доп.  кавыки, они ставятся автоматически  smile 
Вобщем с сервера я отправляю так
Код

arrImages.put("[{'link':'controller/SlideShowAction?userid=" + userId + "&fileid" + Arrays.toString(num) +
                    "&moduleid=" + moduleId + "' ,'description': '" + Arrays.toString(str) + "'}]");

Это правильно ?   Вроде ж все правильно, по - форме  smile

Добавлено через 4 минуты и 37 секунд
Приходит вот так
Код

var config=
[{"id":16,"props":{"imgArray":
["[{'link':'controller/ShowAction?userid=3&fileid[80]&moduleid=16' ,'description': '[blue hills ]'}]",
"[{'link':'controller/ShowAction?userid=3&fileid[83]&moduleid=16' ,'description': '[sunset]'}]",
"[{'link':'controller/ShowAction?userid=3&fileid[82]&moduleid=16' ,'description': '[water]'}]",
"[{'link':'controller/ShowAction?userid=3&fileid[81]&moduleid=16' ,'description': '[winter]'}]"],
"mode":"1"}}]

Что тут не правильно ?? 

PM MAIL   Вверх
Fortop
Дата 18.3.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



Цитата(Samotnik @  18.3.2008,  17:55 Найти цитируемый пост)
arrImages.put

Не понял? Чем отправляешь с сервера? Это что за класс/модуль/функция? На каком языке?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Samotnik
Дата 18.3.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Цитата(Fortop @  18.3.2008,  18:01 Найти цитируемый пост)
Не понял? Чем отправляешь с сервера? Это что за класс/модуль/функция? На каком языке?

Вообще это  Java   но  не суть!!   
Формирование   запросов/ответов   везде одинаковое, просто  вкаждом языке свои методы, для  этого!! 
Интересует, сам  JSON  массив      правильно  сформированн ?? 
PM MAIL   Вверх
Fortop
Дата 18.3.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



нет неправильно
Цитата(Samotnik @  18.3.2008,  17:55 Найти цитируемый пост)
["[{'link'

Вот эта двойная кавычка и соответственно парная ей. не нужны

Добавлено через 2 минуты и 58 секунд
P.S. А в великой и могучей разве нет встроенных функций для формирования JSON?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Samotnik
Дата 18.3.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Цитата(Fortop @  18.3.2008,  18:17 Найти цитируемый пост)
от эта двойная кавычка и соответственно парная ей. не нужны

Так я это понял, еще когда впервый раз мне сказали  smile 
Вопрос в том, как  от нее избавиться ??   Ведь вы видите, что я ее не передаю !!   smile 
Это просто метод  ткаой   put  в который, надо в кавычках передавать всю  инфу ! 
PM MAIL   Вверх
Fortop
Дата 18.3.2008, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



Цитата(Samotnik @  18.3.2008,  18:23 Найти цитируемый пост)
Это просто метод  ткаой   put  в который, надо в кавычках передавать всю  инфу ! 

Метод чей? Библиотечный?
В любом случае в Java можно посмотреть исходный код этого метода. Вот и посмотри.
А еще лучше посмотри другой метод smile тот, которым ты отдаешь в Java JSON строку

Добавлено @ 21:39
Цитата(Samotnik @  18.3.2008,  18:11 Найти цитируемый пост)
Вообще это  Java   но  не суть!!   
Формирование   запросов/ответов   везде одинаковое, просто  вкаждом языке свои методы, для  этого!! 
Интересует, сам  JSON  массив      правильно  сформированн ??  

Понимаешь в чем дело. Причина твоей проблемы только одна.
Ты не можешь определится с тем, где ошибка.

Если тебе приходит в JavaScript неправильный JSON - то стоит посмотреть, что у тебя уходит на стороне сервера.
Не то что ты формируешь и передаешь в .put, а то, что ты отдаешь каким-то методом...

Добавлено через 8 минут и 5 секунд
например вот так.

Код

// набиваем массив
someObj.put('string one');
someObj.put('[{"string1", "string2"}]');

// выводим как JSON - вот сюда смотреть и надо!
someObj.sendJSON


Это сообщение отредактировал(а) Fortop - 18.3.2008, 21:40


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Samotnik
Дата 18.3.2008, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



2 all
Пасибо всем !
Действительно был  метод, который  ложит всю красоту   в  JSON   обьект и  JSON  массив !!!


Это сообщение отредактировал(а) Samotnik - 18.3.2008, 22:15
PM MAIL   Вверх
Samotnik
Дата 18.3.2008, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Окей,   вроде разобрался....  
Знчит, что новую тему не создавть, спрошу тут (т.к. это продолжение...)
Значит мне на клиент приходит такая вот строчка
Код

var config=[{"id":16,"props":
{"imgArray":
[{"description":"[winter]","link":"/controller/ShowAction?userid=3&fileid=[81]&moduleid=16"},
{"description":"[winter]","link":"/controller/ShowAction?userid=3&fileid=[81]&moduleid=16"},
{"description":"[winter]","link":"/controller/ShowAction?userid=3&fileid=[81]&moduleid=16"},
{"description":"[winter]","link":"/controller/howAction?userid=3&fileid=[81]&moduleid=16"}],
"mode":"1"}}]

Я беру значения вот так
Код

var conf = getModuleConfig(this.id);
     this.ImageArray = conf.imgArray;
  for(var i=0; i < this.ImageArray.length; i++) {
      alert(this.ImageArray[i].link);
     alert(this.ImageArray[i].description);
}

ВСе  ОК ! 
Но,  мне потом нужно передавать в различные  функции (их много 10  штук)  все эти значения!  Но проблема, в том, что я не могу понять, как передать, к примеру,  все значения  link ??
Ведь, если я напишу, к примеру
Код

if (this.ImageArray.link.length > 0) 

То будет ошибка !!   т.к. в ImageArray  нету link  в  нем есть только  [0,1,2,3]  (т.е.  массивы)  а уже в этих массивах, есть   link   и  description  и как  быть ?
Если я напишу
Код

if (this.ImageArray[0].link.length > 0) 

То ведь я возьму значение, только у первого элемента массива!  А их  в данном  случае 4 !!!   А может быть и больше будет!  
Что  можно тут  сделать ?? 
 



Это сообщение отредактировал(а) Samotnik - 18.3.2008, 22:28
PM MAIL   Вверх
Samotnik
Дата 18.3.2008, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Пажалста,  Помогите!!    smile 
Это же реальная  проблема!!   


PM MAIL   Вверх
Nigel
Дата 18.3.2008, 23:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: 1
Всего: 19



Samotnik, а что конкретно не получается?
Размер массива вы знаете, размер вложенных в него массивов тоже.
Цитата
Но проблема, в том, что я не могу понять, как передать, к примеру,  все значения  link ??

Это? Смотрите 2-ой пост.

PM MAIL   Вверх
Samotnik
Дата 19.3.2008, 13:39 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Блин,  либо вы не понимаете, либо я ! 
Значит матрите...  
Приходит массив с 2-я  массивами.  Я их разбиваю на 2 массива
Код

 var conf = getModuleConfig(this.id);
    this.linksArray  = [];
    this.descriptionArray= [];
  for(var i=0; i < conf.imgArray.length; i++) {
      this.linksArray[i] = conf.imgArray[i].link;
      this.descriptionArray[i] = conf.imgArray[i].description;
}

Т.е.  в this.linksArray   содержиться  массив!! элементов, и в this.descriptionArray тоже!!
Вот..  
Значит мне нужно:
Взять, к примеру, из  this.linksArray  первое значение ВСЕХ  элементов !!!  Сматрите, если я напишу вот так : this.linksArray[0]  то я возьму  первый элемент!!!  А мне нужно  СВОЙСТВО  ВСЕХ  элементов !!  
Если же я  напишу вот так   this.linksArray[0][0]  То я возьму то что мне надо  НО   это ведь будет  значение  для ПЕРВОГО элемента, а  мне нужно  взять  это первое свойство у  ВСЕХ  элментов!! 
Пэ.Эс.
Теперь  понятно ???

Это сообщение отредактировал(а) Samotnik - 19.3.2008, 14:28
PM MAIL   Вверх
Fortop
Дата 19.3.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



smile Какое именно свойство? Ты можешь уточнить?
Ты понимаешь, что если элементов больше чем 1н, то и первое свойство у всех элементов - это будет список?

т.е. у тебя уже был массив  imgArray в котором у каждого элемента было два свойства link & description.
Чтобы выбрать все эти свойства тебе подсказали сделать цикл. Ты сделал и получил два массива которые содержат в себе нужные тебе свойства.
Например, this.linksArray - содержит именно первое свойство у ВСЕХ твоих элементов. А поскольку элементов больше 1го - то это массив!

Что именно тебе нужно сейчас?

Вот, модифицируй свой код таким образом и скажи что ты наблюдаешь.
Код

for(var i=0; i < conf.imgArray.length; i++) {
    this.linksArray[i] = conf.imgArray[i].link;
    this.descriptionArray[i] = conf.imgArray[i].description;
    // что у тебя выводят эти два алерта? Это то что ты ожидаешь?
    alert(this.descriptionArray[i]);
    alert(this.linksArray[i]);
}


Добавлено через 5 минут и 20 секунд
Да, и попутно сделай 

Код

alert(this.linksArray[0][0])

У меня выводится всего 1на буква 'c' это и правильно. Поскольку твоя запись означает буквально следующее
linksArray - взять все link.
первый [0] - взять link у первого элемента.
второй [0] - взять первый кусочек значения у link первого элемента.

В итоге, мы взяли список всех link, взяли первый из них и взяли первый символ этого link.

Я надеюсь ты понял?

Если да, то поясни, что именно ты хочешь. Ты можешь внятно сказать-  какая именно задача стоит перед тобой?

Добавлено через 7 минут и 20 секунд
Цитата(Samotnik @  19.3.2008,  13:39 Найти цитируемый пост)
Приходит массив с 2-я  массивами.  Я их разбиваю на 2 массива

У тебя приходит массив ОБЪЕКТов!
Где каждый из объектов имеет два свойства.
Вот эти свойства для всех элементов ты и вытаскиваешь в два отдельных массива!


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1028 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.