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_dumpNULLが返されるのか理解できません。ifまた、明らかな理由で、を削除すると、
Warning: Invalid argument supplied for foreach()

これを手伝ってください、私はこれに一日中取り組んできました、そしてそれはそれがまったくうまくいかないほどイライラしています。

注:ファイルの名前は正しいです。ファイルはファイルと同じディレクトリに.phpあり、データがinfile.jsonあり、完了すると印刷さ fwrite($fileout, $json_string); ます。

何が問題になるのでしょうか。どうすればよいですか。


編集:jsonファイルには、Facebookページのデータを含む約1000のエントリがあります。それらはすべて次の構造を持っています:

{"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)前後に
追加します。2)前に 追加 これは正しいですか?fwrite($fileout, "[");fwrite($fileout,"]");foreach
fwrite($fileout,",")fwrite($fileout,PHP_EOL );

4

2 に答える 2

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 を 1 行ずつデコードするか、有効な形式に変換することができます。

于 2013-03-11T21:09:47.030 に答える
2

に無効な JSON が含まれている可能性がありますinfile.jsonjson_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 に答える