Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2013, 17:36   #1
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию JSON to Array

Есть многоуровневый массив data['...']['...']['...']
Я отправляю его на сервер, обработав перед этим следующим образом:

Код HTML:
var array = JSON.stringify(data);
//......
data: {array:array},
dataType:'json',
//......
На сервере данные обрабатываются и идут обратно, приходя в JSON-формате. Мне необходимо опять вернуться к прежней структуре массива. Есть ли такая возможность? Есть ли что то, обратное JSON.stringify()?
Mr_freeman вне форума Ответить с цитированием
Старый 13.09.2013, 18:05   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

JSON.parse('{"foo":"bar"}')
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 16.09.2013, 10:42   #3
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
JSON.parse('{"foo":"bar"}')
Спасибо. Вроде получился объект, а работаю как с массивом, так и должно быть? Я думал не получится.
Mr_freeman вне форума Ответить с цитированием
Старый 16.09.2013, 14:14   #4
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

А массив — это не объект? =)
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 18.09.2013, 15:19   #5
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Более того, в JS вообще всё - объекты

Хотя, как таковая разница между массивом и объектом всё же есть, иногда она существена. Приведу пример.

Помнится, была задача в localStorage сохранить несколько связок id - login. Понятно, что id типа int, а login - string. И тут выбор хранения такой связки данных в массиве будет неверным решением. Почему это так, можно понять выполнив этот код в консоли:

Код:
var id1 = 100;
var id2 = 150;
var login_1 = 'login_1'
var login_2 = 'login_2';

var arr = [];
var obj = {};

arr[id1] = login_1;
arr[id2] = login_2;
obj[id1] = login_1;
obj[id2] = login_2;

var str = "obj:\r\n" + JSON.stringify(obj) + "\r\n\r\narr:\r\n" + JSON.stringify(arr);
str;
^-.-^ My GitHub

Последний раз редактировалось Fenex; 18.09.2013 в 15:24.
Fenex вне форума Ответить с цитированием
Старый 18.09.2013, 19:48   #6
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Помнится, была задача в localStorage сохранить несколько связок id - login. Понятно, что id типа int, а login - string. И тут выбор хранения такой связки данных в массиве будет неверным решением.
чего-чего? ) Array.push(); Вопрос в том, как требуется получать доступ к данным, после их извлечения.

Цитата:
Сообщение от Fenex Посмотреть сообщение
Более того, в JS вообще всё - объекты
заблуждение
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 18.09.2013, 21:54   #7
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от nerv Посмотреть сообщение
заблуждение
отнюдь
Код:
100['toString']['length']; // - число и функция в виде объектов.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 19.09.2013, 22:39   #8
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Цитата:
Сообщение от nerv Посмотреть сообщение
чего-чего? ) Array.push(); Вопрос в том, как требуется получать доступ к данным, после их извлечения.
заблуждение
Имеете ввиду что-то типо этого? Да, тоже вариант конечно.
Код:
{
  "id": id,
  "login": login
}
Мне нужно было получать login, зная id.
В вашем случае придётся сначала искать нужный объект, а потом можно получить логин/id. А мне достаточно сразу обратиться к объекту и получить логин.

Да и вообще я не о крутости реализации говорил. Я привёл пример, где показывается, что различия array от object всё же есть и иногда один тип данных подходит лучше другого.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 20.09.2013, 08:58   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
иногда один тип данных подходит лучше другого.
Всегда. Программист обязан в реализации подразумевать нужный тип данных.
Цитата:
Я привёл пример, где показывается, что различия array от object всё же есть
Конечно есть, но можно их свести при необходимости к минимуму, в зависимости от задачи.
Код:
'1' == 1; // true
'1' === 1; // false
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 21.09.2013, 15:10   #10
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
отнюдь
null, undefined. Примитивы оборачиваются в объекты при необходимости.
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ JSON qip2005 Visual C++ 2 05.11.2012 19:48
Записать Array of AnsiChar в Array of AnsiChar Anton911 Общие вопросы Delphi 4 07.05.2012 21:58
Qt + Json Lindemann66 Qt и кроссплатформенное программирование С/С++ 0 18.08.2011 15:26
str->array & array->str LeoN PHP 6 06.07.2010 22:38
Array или не array Димарик Общие вопросы Delphi 4 18.06.2007 15:16