Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.07.2011, 01:58
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Разбор json-строки на стороне клиента (двумерный массив)
1) У хостера PHP4 (не бросайтесь тапками)
2) Прожект в windows-1251 (не швыряйте последние)
Нарыл в инете функцию array2json(); (спасибо доброму человеку)
С одномерными массивами, проблем нет,
однако многомерные передает следующим образом:
{
"0":{"id":351,"post":"Привет"},
"1":{"id":352,"post":"Как дела?"}
}
Чем разобрать такого вида запись???

ЗЫ: эти json-парсеры не канают!
Ответить с цитированием
  #2 (permalink)  
Старый 25.07.2011, 11:48
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Парсер Крокфорда не работает? Звучит очень сомнительно. Потому как даже простой eval для приведенной вами строки прекрасно справляется:
eval('(' + jsonString + ')')
Ответить с цитированием
  #3 (permalink)  
Старый 25.07.2011, 11:55
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

https://raw.github.com/douglascrockf...aster/json2.js

Либо Крокфорда, которая может как парсить JSON в JS, так и преобразовывать JS в JSON. Там также учитывается, что современные браузеры умеют это делать нативно.

ЗЫ: если у вас не пашет, то значит ошибка у вас)
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 25.07.2011 в 12:05.
Ответить с цитированием
  #4 (permalink)  
Старый 25.07.2011, 12:04
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Возьмите нормальную библиотеку для работы с JSON в php.
Ответить с цитированием
  #5 (permalink)  
Старый 25.07.2011, 12:10
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Триви
Разбор json-строки на стороне клиента (двумерный массив)
1) У хостера PHP4 (не бросайтесь тапками)
2) Прожект в windows-1251 (не швыряйте последние)
Нарыл в инете функцию array2json(); (спасибо доброму человеку)
С одномерными массивами, проблем нет,
однако многомерные передает следующим образом:{
"0":{"id":351,"post":"Привет"},
"1":{"id":352,"post":"Как дела?"}
}

ну и зачем это всё написано если нужно на клиенте разобрать?

JSON.parse()-стандартная функция скрипта для разбора. ну дальше просто определить что значение а что массив если заранее не известно

Последний раз редактировалось dmitriymar, 25.07.2011 в 12:44.
Ответить с цитированием
  #6 (permalink)  
Старый 25.07.2011, 13:54
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Спасибо за ответы..
Видать я разбираю как то не так?
Разбор делаю следующим образом:
function iterate(data){
    if (data instanceof Array) {
      for (var i in data) {
        iterate(data[i]);
      }
    } else {
       document.write(data['id'] + ' -> ' + data['post'] + '</BR>');
    }
  }


Не пойму где косяк?!!
Ответить с цитированием
  #7 (permalink)  
Старый 25.07.2011, 14:10
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Массивы так не перебирают.

И это:
Цитата:
{
 "0":{"id":351,"post":"Привет"},
 "1":{"id":352,"post":"Как дела?"}
 }
не массив.
Ответить с цитированием
  #8 (permalink)  
Старый 25.07.2011, 14:39
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

сначала JSON.parse()
а потом определять что массив а что нет ,и то при условии что структура не известна заранее.а так ,если каждый элемент яссон после распарсинья массив с чёткой структурой,зачем извращение? кол-во массивов узнать легко. кол-во и последовательность элементов в массиве известно- зачем чтото изобретать если достаточно мануал по функции прочитать?
Ответить с цитированием
  #9 (permalink)  
Старый 25.07.2011, 15:33
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Естественно я парсю сначала..
Общий смысл такой:

if (data) {

        var block_arr = JSON.parse(data);

        for (i = 0; i < block_arr.length; i++) {

             var block += topic_block(block_arr[i].id, block_arr[i].post, block_arr[i].name, block_arr[i].date_string);


        }

        $('#outer').scrollTop($('#topic').append(block).height());
}


При попытке вывести alert(block_arr.length) - андефайнд!!!
Я новичок в этих вопросах, подскажите в чем тут дело?
Помогите, PLZ, разобраться!
Ответить с цитированием
  #10 (permalink)  
Старый 25.07.2011, 15:50
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

1 стоит посмотреть на то действительно ли это ясон -а то может быть по виду один в один практически,а не ясон. (в фаербаге-посмотреть на ответ-ясон он или нет)

Последний раз редактировалось dmitriymar, 25.07.2011 в 16:07.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать массив (JSON, XML не причем) ybiza AJAX и COMET 2 17.05.2011 08:58
Очистить двумерный массив vah-smile Элементы интерфейса 7 30.03.2011 15:26
Массив AJAX + JSON RCuPeR AJAX и COMET 4 09.02.2011 12:34
Преобразование данных json в массив LA_ Общие вопросы Javascript 4 28.10.2010 23:54
Разбор ответа в формате Json Rush Общие вопросы Javascript 11 29.01.2010 16:57