使用PHP读取JSON响应

时间:2014-05-14 21:44:31

标签: php json

我发现了类似的问题,但没有一个与我的结构完全匹配。我从未使用过JSON,所以我不清楚它是如何解析的。

我要做的就是回显来自url的JSON响应,并将响应作为变量进行操作。结构是:

{"results":{"books":{"2014-05-13":[{"book":{"book_date":"2014-05-13","book_publisher":"Some Publisher","book_id":"123","book_author":"Some Author" etc etc etc

我希望能够将每个图书的日期,出版商,身份证明,作者信息反映出来并存储到变量中。

我一直在使用的原因导致错误:为foreach提供的参数无效()

$api_url = 'myurl/books.json';
$json = file_get_contents($api_url);
$json2 = json_decode($json, true);

foreach($json2->book as $book)
{
    echo $book->date;
    echo $book->publisher;
    echo $book->id;
    echo $book->date;
    echo $book->author;
}

1 个答案:

答案 0 :(得分:1)

$json2 = json_decode($json,true);

将创建一个关联数组

所以你不能像现在这样以对象的方式迭代它。

你应该得到一个如下的数组

[results] => Array
        (
            [books] => Array
                (
                    [2014-05-13] => Array
                        (
                            [0] => Array
                                (
                                    [book] => Array
                                        (
                                            [book_date] => 2014-05-13
                                            [book_publisher] => Some Publisher
                                            [book_id] => 123
                                            [book_author] => Some Author
                                        )

                                )

                        )

                )

        )

所以你需要使用数组索引来遍历数据。