如何从PHP读取JSON结果

时间:2014-05-15 06:36:42

标签: php json

如何使用php访问以下json输出元素..

{
    "ISBN:9781430215752": {
        "bib_key": "ISBN:9781430215752",
        "preview":
                "restricted",
        "preview_url":
                "https://archive.org/details/linuxrecipesforo00kuhn",
        "info_url": "https://openlibrary.org/books/OL23936576M/Linux_recipes_for_Oracle_DBAs",
        "details": {
            "lc_classifications": ["QA76.9.D3 K84 2009"],
            "latest_revision": 2,
            "ocaid": "linuxrecipesforo00kuhn",
            "contributions": ["Kim, Charles.", "Lopuz, Bernard."],
            "source_records": ["marc:marc_loc_updates/v37.i44.records.utf8:10470755:1047"],
            "title":
                    "Linux recipes for Oracle DBAs",
            "languages": [{
                    "key": "/languages/eng"
                }],
            "subjects": ["Linux", "Oracle (Computer file)", "Relational databases", "Database management"],
            "publish_country": "cau",
            "by_statement": "Darl Kuhn, Charles Kim, Bernard Lopuz.",
            "type": {
                "key": "/type/edition"
            },
            "revision": 2,
            "other_titles": ["Linux recipes for Oracle DataBase Administrators"],
            "publishers": ["Apress", "Distributed to the book trade by Springer-Verlag"],
            "last_modified": {
                "type": "/type/datetime",
                "value": "2014-04-06T06:55:36.956977"
            },
            "key": "/books/OL23936576M",
            "authors": [{
                    "name": "Darl Kuhn",
                    "key": "/authors/OL1484587A"
                }],
            "publish_places": ["Berkeley, CA", "New York"],
            "oclc_number": ["243543902"],
            "pagination": "xxv, 501 p. :",
            "created": {
                "type": "/type/datetime",
                "value": "2009-11-24T23:42:39.524606"
            },
            "dewey_decimal_class": ["005.75/65 22", "005.26/8"],
            "notes": {
                "type": "/type/text",
                "value": "Includes index."
            },
            "number_of_pages": 501,
            "isbn_13": ["9781430215752"],
            "lccn": ["2009277832"],
            "isbn_10": ["1430215755"],
            "publish_date": "2008"
        }
    }
}

我尝试使用下面的代码,
它没有用。

$json = json_decode($body);

echo $json->ISBN:9780980200447->info_url;

它发出错误..

还有其他简单方法可以阅读所有元素吗?

4 个答案:

答案 0 :(得分:3)

你走在正确的轨道上。 :只是属性的无效字符,必须处理特殊。

echo $json->{'ISBN:9781430215752'}->info_url;

会得到预期的结果。

答案 1 :(得分:1)

您也可以解码为关联数组

$json = json_decode($body, true);
echo $json['ISBN:9781430215752']['info_url'];

我可能会坚持使用这种方法而不是面向对象,因为封装密钥会降低代码的可读性

答案 2 :(得分:0)

您必须使用

echo $json->{'ISBN:9780980200447'}->info_url;

因为'ISBN:9780980200447'是您的班级名称。

参考:php.net

<?php

$json = '{"foo-bar": 12345}';

$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345

?>

答案 3 :(得分:0)

使用这样的大括号:

echo $json->{'ISBN:9781430215752'}->info_url;