2014-12-27 4 views
-1

Я наконец-то убедился, что мои объекты JSON проскальзывают через валидатор JSON. Однако, когда я пытаюсь декодировать, он возвращает null. мой объект JSON выглядит следующим образом:php JSON возвращает объект null

[ 
    { 
     "NAME": "Hearthstone", 
     "PLAYER1": "Rdu ", 
     "PLAYER2": "Savjz ", 
     "status": 2, 
     "meta": "LIVE" 
    }, 
    { 
     "NAME": "LeagueofLegends", 
     "PLAYER1": "TeamKing", 
     "PLAYER2": "EDG", 
     "status": 2, 
     "meta": "28.12." 
    } 
] 

PHP расшифровывает:

$json = file_get_contents("crawl_JSON.php"); 
$json_output = json_decode($json); 

var_dump($json_output); 
+1

Убедитесь, что 'crawl_JSON.php' не выводит ничего до или после JSON. – Barmar

+0

'var_dump ($ json)' –

+1

Неужели вас не задали в предыдущем вопросе, чтобы создать минимальный пример? Пожалуйста, делайте это каждый раз, это не поможет. –

ответ

2

В файле декодировании PHP, вы вокруг него с <? и ?>?

Это работало для меня, когда я пытался. Я предполагаю, что файл с вашим JSON называется crawl_JSON.php, и он находится в том же каталоге, из которого вы выполняете файл PHP? Если нет, вам может потребоваться указать полный путь.

Более подробно из моих файлов:

crawl_JSON.php:

[ 
    { 
     "NAME": "Hearthstone", 
     "PLAYER1": "Rdu ", 
     "PLAYER2": "Savjz ", 
     "status": 2, 
     "meta": "LIVE" 
    }, 
    { 
     "NAME": "LeagueofLegends", 
     "PLAYER1": "TeamKing", 
     "PLAYER2": "EDG", 
     "status": 2, 
     "meta": "28.12." 
    } 
] 

test.php:

<? 
$json = file_get_contents("crawl_JSON.php"); 
$json_output = json_decode($json); 

var_dump($json_output); 
?> 

И мой выход из выполнения программы:

Marks-MacBook-Pro:stackOverflow mmadej$ php -f test.php 
array(2) { 
    [0]=> 
    object(stdClass)#1 (5) { 
    ["NAME"]=> 
    string(11) "Hearthstone" 
    ["PLAYER1"]=> 
    string(4) "Rdu " 
    ["PLAYER2"]=> 
    string(6) "Savjz " 
    ["status"]=> 
    int(2) 
    ["meta"]=> 
    string(4) "LIVE" 
    } 
    [1]=> 
    object(stdClass)#2 (5) { 
    ["NAME"]=> 
    string(15) "LeagueofLegends" 
    ["PLAYER1"]=> 
    string(8) "TeamKing" 
    ["PLAYER2"]=> 
    string(3) "EDG" 
    ["status"]=> 
    int(2) 
    ["meta"]=> 
    string(6) "28.12." 
    } 
} 
+0

Почему JSON-файл должен быть назван '.php', если он не является скриптом PHP? Это странно смущает. Скорее всего, это скрипт PHP, который выводит JSON при запуске, поэтому ответ Бармара будет правильным. –

+0

@LightnessRacesinOrbit В предыдущем вопросе OP в некоторых комментариях показывал, как он строит его с массивами PHP, я должен признать, что сообщение не является полным – meda

+0

Я предполагаю, что он просто новый кодер и, вероятно, не знает, как правильно это сделать все. В противном случае он, вероятно, не был бы здесь с относительно простым вопросом. Я думаю, что crawl_JSON.php явно является файлом JSON (а не PHP), основанным только на содержимом. –

2

PHP-скрипты не запускаются если вы обращаетесь к ним как к обычным файлам, вам необходимо получить к ним доступ через веб-сервер. Поэтому изменить его на:

$json = file_get_contents("http://localhost/crawl_JSON.php"); 

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