0

次のような Facebook Open Graph 情報を含む TXT ファイルがあります。

{
    "data": [
      {
        "name": "Avatar", 
        "category": "Movie", 
        "id": "82771544063", 
        "created_time": "2012-04-13T21:16:56+0000"
      }, 
      {
        "name": "HappyDance", 
        "category": "Movie", 
        "id": "243564344063", 
        "created_time": "2012-04-13T21:16:56+0000"
      } 
    ], 
    "paging": {
        "next": "https://graph.facebook.com/me/likes?format=json&limit=5000&offset=5000&__after_id=5546653546361"
    }
}

PHPで、表示されている行からすべてのID番号を抽出したい

"id": "XXXXXXXXXXXX", 

出力は次のようになります。

I like 8277564344063
I like 243564344063

以下を開始しましたが、エラーが発生しています。

<?php
$file_handle = fopen("raw.txt", "rb");
ob_start();

$text = file_get_contents('raw.txt');
$decode = json_decode($text);

print_r($decode);

$new_content = ob_get_clean();
file_put_contents("likes.txt", $new_content);

fclose($file_handle);
?>

エラーは、私の出力が空白であることです! 私は何を間違っていますか?

助けてください?

4

1 に答える 1

2

有効なJSONがありません。

この行の下のJSONオブジェクトは有効なJSONです。「データ」配列内の最後の連想配列の後のコンマを削除しました。配列の最後にコンマは必要ありません。

        {
            "data": [
              {
                "name": "Avatar", 
                "category": "Movie", 
                "id": "82771544063", 
                "created_time": "2012-04-13T21:16:56+0000"
              }, 
              {
                "name": "HappyDance", 
                "category": "Movie", 
                "id": "243564344063", 
                "created_time": "2012-04-13T21:16:56+0000"
              }
            ], 
            "paging": {
                "next": "https://graph.facebook.com/me/likes? format=json&limit=5000&offset=5000&__after_id=5546653546361"
            }
        }


Parse error on line 14:
...    },            ],    "paging": { 
---------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

無効なJSONからコンマを削除したため。私はあなたが望む結果を得ることができました。

            <?php
                $json_object = file_get_contents('fb.json');
                if(!$json_object) {
                                      echo "oops, cant read the file";
                                    }

                 // remap json_object
                 $json_object = json_decode($json_object,true);

                    foreach($json_object['data'] as $item) {
                            $items[] = "I like" . ' ' . $item['id'];

                      /* If you want to just echo " I like xyz" etc
                       * use echo "I like" . $item['id'];
                       */
                        }

                  $list = implode(',',$items);

                  echo $list;
            ?> 
于 2012-04-13T23:51:05.260 に答える