2013-03-11 86 views
0
<?php 
    $json_string = file_get_contents('infile.json'); 
    fwrite($fileout, $json_string); 
    var_dump(json_decode($json_string)); 
    $get_json_values=json_decode($json_string,true); 
     if(is_array($get_json_values)) 
     { 
     foreach ($get_json_values as $getlikes) { ?> 
      <li> 
      <a href="https://www.facebook.com/<?php echo $getlikes['id']; ?>" target="_top"> 
      </li> 
     <?php 
     } } 
     ?> 

我想從json文件獲得值,我只是不知道爲什麼var_dump返回NULL。此外,如果我刪除if,出於顯而易見的原因,還有一個
Warning: Invalid argument supplied for foreach()var_dump返回null,不知道爲什麼

請幫我這個,我一直工作在這整整一天,它只是如此令人沮喪,它不工作了以任何方式。

注:該文件的名稱是正確的,該文件是與.php文件同一目錄下,有在infile.jsonfwrite($fileout, $json_string);完成它打印數據。

會有什麼問題,我該怎麼辦?


編輯:json文件有大約1000個包含Facebook頁面數據的條目。他們都具有以下結構:

{"category":"Musician\/band","name":"Yann Tiersen (official)","id":"18359161762","created_time":"2013-03-09T23:00:54+0000"} 

var_dump($json_string)從文件打印數據。

如果這有助於以任何方式,json文件可以下載here


我已經作出了我的JSON是這樣的:

function idx(array $array, $key, $default = null) { 
    return array_key_exists($key, $array) ? $array[$key] : $default; 
} 
$likes = idx($facebook->api('/me/likes'), 'data', array()); 
foreach ($likes as $like) { 

        fwrite($fileout,json_encode($like)); 
        fwrite($fileout,PHP_EOL); 
        ?>` 

所以,我應該怎麼改變將是:
1)在foreach之後加fwrite($fileout, "[");,fwrite($fileout,"]");
2)在fwrite($fileout,PHP_EOL);之前加 這是正確的嗎?

+1

請顯示'infile.json'的內容 – AlienWebguy 2013-03-11 20:42:13

+1

'var_dump($ json_string);'並粘貼結果。 「如果json無法解碼,或者編碼數據比遞歸限制更深,則返回NULL。」 – mkaatman 2013-03-11 20:42:17

+0

您確定錯誤檢查和顯示已打開嗎? – 2013-03-11 20:42:45

回答

2

您的JSON文件無效。

基本上你有很多行都是有效的JSON本身,但它們不是有效的組合!

無效:

{"category":"Musician\/band","name":"Yann Tiersen (official)","id":"18359161762","created_time":"2013-03-09T23:00:54+0000"} 
{"category":"Travel\/leisure","name":"Me hitchhiking around the world","id":"221159531328223","created_time":"2013-03-09T13:24:06+0000"} 

是有效的:

[ 
    {"category":"Musician\/band","name":"Yann Tiersen (official)","id":"18359161762","created_time":"2013-03-09T23:00:54+0000"} 
, 
    {"category":"Travel\/leisure","name":"Me hitchhiking around the world","id":"221159531328223","created_time":"2013-03-09T13:24:06+0000"} 
] 

您可以通過行解碼JSON線,或將其轉換成有效的格式。

+0

我有最後一個問題,我想我已經完成了。非常感謝您的幫助。我會在一分鐘內更新問題 – 2013-03-11 21:29:24

+0

我終於更新了問題,對不起延遲。最後一個,我保證! 你可能爲我節省了一個糟糕的一天。 – 2013-03-11 21:44:23

+0

'$ likes'已經是一個數組了。不要foreach和json_encode的部分。 'json_encode($ likes);'工作。而'file_put_contents()'也存在。 – Sven 2013-03-11 22:06:32

2

您可能在infile.json中有無效的JSON。根據文檔json_decode()

NULL is returned if the json cannot be decoded or if the encoded data is deeper 
than the recursion limit. 
+0

我看過文檔,該文件不應該是無效的。它包含來自facebook的有效數據。我更新了語句 – 2013-03-11 20:53:06

+0

我也提供了一個鏈接,您可以從這裏下載json – 2013-03-11 21:06:05

+1

Your文件無效JSON就像我最初懷疑的那樣,你需要將它轉換爲一個由逗號分隔的對象數組,它們不能用換行符分隔,也不能用數組括號包裝。 .com /將來簡化這些故障排除工作 – AlienWebguy 2013-03-11 21:24:14

相關問題