2014-12-27 248 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 2014-12-27 19:00:45

+0

'var_dump($ json)' – 2014-12-27 19:00:59

+1

在上一個問題中,您是否被問過產生一個最簡單的例子?請每次都這樣做,這不會有幫助。 – 2014-12-27 19:06:00

回答

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'?這太瘋狂了。更可能的是它實際上是一個運行時輸出JSON的PHP腳本,所以Barmar的回答是正確的。 – 2014-12-27 19:19:46

+0

@LightnessRacesinOrbit在之前的一個問題中,OP在一些評論中展示瞭如何用PHP數組構建它,我不得不承認Post不完整 – meda 2014-12-27 19:26:38

+0

我的猜測是他只是一個新的編碼器,並且可能不知道正確的方法一切。否則,他可能不會在這裏提出一個相對簡單的問題。我認爲crawl_JSON.php顯然是一個基於內容的JSON文件(而不是PHP)。 – 2014-12-27 19:28:06

2

PHP腳本未運行如果您以普通文件的形式訪問它們,則必須通過網絡服務器訪問它們。因此,將其更改爲:

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

這假定腳本在文檔根目錄,你可能需要從文檔根目錄添加到腳本的完整路徑。