Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> json_decode не разбирает строку 
V
    Опции темы
solenko
Дата 29.2.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 34
Всего: 67



Здравствуйте.
Есть json строка, которая собирается/разбирается javascript'ом на ура. При этом json_decode на ней возвращает null.
Вопрос самый бвнвльный -- почему не работает? Может есть какие-то дополнительные ограничения на json для json_decode? 
Сама строка (прошу простить за объемы, но с более простыми строками и php справляется):
Код

[{"start": "_~ksI}todF@Pq@TWM}@mEiAkRPs@rPmOnHgGN?Xn@H`AlFzUhDhMrDhK~@Ir@sAj@\~IzKpY~XzC~B~AG`J}GpAiANa@`AiAb@WhB[jM@t@F`@P`@_C\qDxBsMlFaZe@{AoB_@mFeCuF_Dm@}@g@]mIoDk@FQz@GG"}]



Это сообщение отредактировал(а) solenko - 29.2.2008, 14:59


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 29.2.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

Репутация: 75
Всего: 260



один из комментариев на php.net заявляет следующее:
Цитата

It took me a while to find the right JSON string format grabbed from mysql to be used in json_decode(). Here is what i came up with:

Bad(s) (return NULL):
{30:'13',31:'14',32:'15'}
{[30:'13',31:'14',32:'15']}
{["30":"13","31":"14","32":"15"]}

Good :
[{"30":"13","31":"14","32":"15"}]

returns:
array(1) { [0]=>  array(3) { [30]=>  string(2) "13" [31]=>  string(2) "14" [32]=>  string(2) "15" } }

в связи с этим предлагаю попробовать вариант
Код

[
    {"start": [{
        "lat":55.7574, 
        "lng":37.6003, 
        "id": 4
      }], 
      "end": [{
        "lat":55.7576, 
        "lng":37.5991, 
        "id": 5
      }], 
      "distance":91.22883812411627, 
      "polyline": "wbisIyxndFH@e@pFKE", 
      "levels": "PAAP"
    }], 
    [{"start": [{
        "lat":55.7567, 
        "lng":37.605, 
        "id": 3
    }], 
     "end": [{
        "lat":55.7574, 
        "lng":37.6003, 
        "id": 4
     }], 
     "distance":309.4332263326606, 
     "polyline": "k~hsIevodFiA|Pw@nJIA", 
     "levels": "PAAP"
    }], 
    [{"start": [{
        "lat":55.7558, 
        "lng":37.6084, 
        "id": 2
    }], 
     "end": [{
        "lat":55.7567, 
        "lng":37.605, 
        "id": 3
     }], 
     "distance":237.90049609110721, 
     "polyline": "wxhsIokpdFwAfGs@lEi@pE@@", 
     "levels": "PB@?P"
    }], 
    [{"start": [{
        "lat":55.7548, 
        "lng":37.6118, 
        "id": 1
    }], 
     "end": [{
        "lat":55.7558, 
        "lng":37.6084, 
        "id": 2
     }], 
     "distance":245.3276261210774, 
     "polyline": "orhsIw`qdFFFoE~S", 
     "levels": "PAP"
    }], 
    [{"start": [{
        "lat":55.7576, 
        "lng":37.5991, 
        "id": 5
    }], 
    "end": [{
        "lat":55.772, 
        "lng":37.6048, 
        "id": 23
    }], 
     "distance":1820.5696830145976, 
     "polyline": "_disIkqndFJDSz@ki@oh@gAsAeCsH}@@mBhCa@AsSrEgFtAqE`BAQ", 
     "levels": "PADDBGCDABABP"
    }], 
    [{"start": [{
        "lat":55.772, 
        "lng":37.6048, 
        "id": 23
    }], 
     "end": [{
        "lat":55.7548, 
        "lng":37.6118, 
        "id": 1
     }], 
     "distance":4501, 
     "polyline": "_~ksI}todF@Pq@TWM}@mEiAkRPs@rPmOnHgGN?Xn@H`AlFzUhDhMrDhK~@Ir@sAj@\~IzKpY~XzC~B~AG`J}GpAiANa@`AiAb@WhB[jM@t@F`@P`@_C\qDxBsMlFaZe@{AoB_@mFeCuF_Dm@}@g@]mIoDk@FQz@GG", 
     "levels": "PBBDDBFBAHAACBGCCECDCIBA@AEBB@G@A@HCBCBADDBAP"
    }

]


Добавлено через 6 минут и 3 секунды
поторопился. все равно не работает.
PM MAIL   Вверх
solenko
Дата 29.2.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 34
Всего: 67



skyboy, проблемма не в этом. Только корневой лемент должен быть массивом.
Проверить просто -- берем первые 2 элемента массива из примера -- работает.

Эксперементы показали, что проблемма в одном свойстве (подправил начальный исходник до необходимого минимума).
Что в нем не так понять не могу.

Добавлено через 3 минуты и 28 секунд
половинное деление показало, что проблемма в слеше

Добавлено через 8 минут и 16 секунд
Остался только один вопрос -- как заставить json_decode работать со строками, содержащими слеш(экранирование \\ он не понимает)


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 29.2.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

Репутация: 75
Всего: 260



Цитата(solenko @  29.2.2008,  13:58 Найти цитируемый пост)
как заставить json_decode работать со строками, содержащими слеш(экранирование \\ он не понимает)

хехе. мало того, что слешировать надо для парсера, но и для PHP тоже. 
то есть, парсинг под PHP обрабатывает "\\\" как "\": сначала один слеш отбрасывает PHP(естественно, если ты при задании исходной строки используешь двойные кавычки или HEREDOC), второй слеш отбрасывает JSON-парсер. 
PM MAIL   Вверх
coyl
  Дата 5.6.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Такая же проблема. При экспериментах выяснилось, что json_decode еще и кирилицу есть не хочет. Только в utf. Может у кого есть на примете хороший класс для разбора Джейсона. А то он и впрям стал потрошителем... для мозгов =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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