json_decode возвращает ноль с PHP, NFL API - PullRequest
0 голосов
/ 16 августа 2011

По какой-то причине json_decode возвращает NULL с допустимым JSON.

Здесь находится json: http://www.nfl.com/liveupdate/scorestrip/scorestrip.json

Я получаю содержимое файла страницы (file_get_contents) и затем запускаюjson_decode на это.

Также пробовал стрип-слэш б / к магических кавычек.

Заранее спасибо, Фил

$json = file_get_contents('http://www.nfl.com/liveupdate/scorestrip/scorestrip.json');

var_dump(json_decode($json));

Ответы [ 3 ]

2 голосов
/ 16 августа 2011

Пустые элементы массива недопустимы в формате JSON, т. Е. Множественные запятые без значений между

["Thu","7:30","Final",,"BAL","6","PHI","13",,,"55424",,"PRE1","2011"]
                      ^ Here                ^ Here    ^Here

Вы можете попробовать вставить пустые строки между несколькими запятыми (спасибо hakre ), т.е.

$json = preg_replace('/,(?=,)/m', ',""', $json);
// I'm dubious about this working, don't have PHP to test but it works in JS

Я не знаю, портит ли это вашу способность продолжать использовать данные, хотя

1 голос
/ 23 сентября 2014

Для тех, кто ищет в 2014 году. Новая ссылка на данные канала должна быть:

http://www.nfl.com/liveupdate/scores/scores.json

1 голос
/ 16 августа 2011

Я пришел к тому же выводу, что и Фил, но это заняло у меня около 5 минут дольше.:)

Тем не менее, я заметил проблему в его выводе ... это удаление поля.

Мне не нравится делать такое обнаружение паттернов в RegEx, только потому, что я думаюэто сложнее поддерживать.В этом случае я просто запускаю цикл while.

while (strpos($json,',,'))
{
    $json = str_replace(',,',',"",', $json);
}

Я уверен, что Фил может придумать правильный RegEx, но это решение будет поддерживать правильное количество записей и их порядковые позиции.

...