var_dump返回null,无法弄清楚原因

时间:2013-03-11 20:40:03

标签: php json

   <?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()

请帮我解决这个问题,我一整天都在研究这个问题,这真是令人沮丧,以至于它无论如何都无法解决。

注意:文件名正确,文件与.php文件位于同一目录中,infile.json中有数据,时打印 fwrite($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 <{1}}文件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)在fwrite($fileout, "[");之后添加fwrite($fileout,"]");foreach之后添加fwrite($fileout,",") 2)在fwrite($fileout,PHP_EOL );之前添加{{1}} 这是对的吗?

2 个答案:

答案 0 :(得分:2)

infile.json中可能包含无效的JSON。根据{{​​3}}的文档:

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

答案 1 :(得分: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,也可以将其转换为有效格式。