如何使用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;
它发出错误..
还有其他简单方法可以阅读所有元素吗?
答案 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;