Разбор json-строки на стороне клиента (двумерный массив)
1) У хостера PHP4 :-E (не бросайтесь тапками)
2) Прожект в windows-1251 :-E (не швыряйте последние) Нарыл в инете функцию array2json(); (спасибо доброму человеку) С одномерными массивами, проблем нет, однако многомерные передает следующим образом: { "0":{"id":351,"post":"Привет"}, "1":{"id":352,"post":"Как дела?"} } Чем разобрать такого вида запись??? ЗЫ: эти json-парсеры не канают! :-/ |
Парсер Крокфорда не работает? Звучит очень сомнительно. Потому как даже простой eval для приведенной вами строки прекрасно справляется:
eval('(' + jsonString + ')') |
https://raw.github.com/douglascrockf...aster/json2.js
Либо Крокфорда, которая может как парсить JSON в JS, так и преобразовывать JS в JSON. Там также учитывается, что современные браузеры умеют это делать нативно. ЗЫ: если у вас не пашет, то значит ошибка у вас) |
Возьмите нормальную библиотеку для работы с JSON в php.
|
Цитата:
ну и зачем это всё написано если нужно на клиенте разобрать? JSON.parse()-стандартная функция скрипта для разбора. ну дальше просто определить что значение а что массив если заранее не известно |
Спасибо за ответы.. :thanks:
Видать я разбираю как то не так? Разбор делаю следующим образом: function iterate(data){ if (data instanceof Array) { for (var i in data) { iterate(data[i]); } } else { document.write(data['id'] + ' -> ' + data['post'] + '</BR>'); } } Не пойму где косяк?!! :-E |
Массивы так не перебирают.
И это: Цитата:
|
сначала JSON.parse()
а потом определять что массив а что нет ,и то при условии что структура не известна заранее.а так ,если каждый элемент яссон после распарсинья массив с чёткой структурой,зачем извращение? кол-во массивов узнать легко. кол-во и последовательность элементов в массиве известно- зачем чтото изобретать если достаточно мануал по функции прочитать? |
Естественно я парсю сначала..
Общий смысл такой: 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) - андефайнд!!! Я новичок в этих вопросах, подскажите в чем тут дело? :blink: Помогите, PLZ, разобраться! |
1 стоит посмотреть на то действительно ли это ясон -а то может быть по виду один в один практически,а не ясон. (в фаербаге-посмотреть на ответ-ясон он или нет)
|
Часовой пояс GMT +3, время: 12:23. |