Нужна помощь в отладке огромного куска данных JSON - PullRequest
0 голосов
/ 15 июня 2010

У меня огромный кусок, такой большой, что я не могу вручную отредактировать файл, и мне нужно прочитать его и выполнить операции регулярного выражения, чтобы увидеть, что не так.

В основном - мой сервер - PHP 5.1.6и я не могу обновить его.Это более старая версия json_decode, которая менее функциональна, чем версии 5.2 / 5.3.

json_decode возвращает значение NULL и json_last_error вызывается, но функция не существует, за исключением PHP 5.3, поэтому я 'м вручную, пытаясь понять, что не так.

$regex = '#[^0-9"$a-zA-Z{:}().]#';
$json = preg_replace( $regex, '', $json );
$tree = json_decode ( $json, true );

var_dump($tree); // NULL

Фрагмент JSON .. где-то в середине

{"109": 0, "103": 1,"102": 59, "101": 70, "100": 4299, "94": 0, "50": 51, "46": 0, "45": 0, "44": 0, "43": 0," 42 ": 0," 23 ": 0," 22 ": 0," 18 ": 0," 17 ": 1," 16 ": 1," 13 ": 160," 8" :4298}}, "2": { "d": { "109": 0, "103": 92, "102": 54, "101": 53, "100": 4301, "94": 0,"50": 4278, "49": 328, "46": 1, "45": 0, "44": 1, "43": 0, "42": 0, "26": 0, "23": 0," 22 ": 0," 18 ": 0," 17 ": 1," 16 ": 1," 8 ": 4300}," м ": {" 94 ": 1," 100" :1, "26": 1, "50": 1, "8": 1, "49": 1, "18": 1, "43": 1, "42": 1, "109": 1}, "с": { "/": { "d": { "109": 0, "100": 4301, "94": 0, "50": 4278, "49": 328, "43":0, "42": 0, "26": 0, "18": 0, "8": 4300}}, "G": { "d": { "109": 1, "100": 4303,"94": 1, "68": 17, "50": 64, "49": 53, "43": 1, "42": 1, "34": 0, "18": 1, "13": 2216," 11 ": 0," 8 ": 4302}}}}," 3 ":

}}}} является подозрительным, но это, вероятно,просто закрывает 4 литерала вложенных объектов.

Буду признателен за любые идеи.

Ответы [ 2 ]

1 голос
/ 15 июня 2010

Вы пробовали класс PEAR Services_JSON ? Это может дать вам более полезную ошибку и хорошо работает на старых версиях PHP.

0 голосов
/ 16 июня 2010

Я несколько раз проверял данные в формататоре / валидаторе JSON, и он был действительным. Набор данных слишком велик, и даже использование VIM для уничтожения вложенных объектов - большая работа.

Мне удалось запустить этот набор данных локально, поэтому я собираюсь заключить, что это проблема с вложенным лимитом 20 для PHP 5.1, когда он увеличивается в PHP 5.2 и 5.3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...