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

请帮我解决这个问题,我整天都在做这个,这太令人沮丧了,它无论如何都没有解决。

注意:文件名正确,文件与文件在同一目录下.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可以在此处下载文件


我已经像这样组成了我的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, "[");before 和fwrite($fileout,"]");after foreach
2)添加fwrite($fileout,",")之前fwrite($fileout,PHP_EOL ); 是这样吗?

4

2 回答 2

2

您可能在infile.json. 根据json_decode()的文档:

NULL is returned if the json cannot be decoded or if the encoded data is deeper 
than the recursion limit.
于 2013-03-11T20:43:29.960 回答
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,也可以将其转换为有效格式。

于 2013-03-11T21:09:47.030 回答