我正在做一个很小的项目。我正在尝试从此json响应中提取"name": "PHP",
,但对于如何执行此操作我很困惑。这是json:
"request": "https://whatcms.org/APIEndpoint/Technology?key=hidden&url=en.wikipedia.org",
"request_web": "https://whatcms.org/?s=en.wikipedia.org",
"result": {
"code": 200,
"msg": "Success"
},
"results": [
{
"categories": [
"Wiki"
],
"name": "MediaWiki",
"url": "https://whatcms.org/c/MediaWiki",
"version": "1.34.0"
},
{
"categories": [
"Programming Language"
],
"name": "PHP",
"version": ""
},
{
"categories": [
"Web Server"
],
"name": "HHVM",
"version": "3.18.6"
}
]
}
这是我尝试的代码,但似乎没有用。我收到此错误Notice: Trying to get property 'name' of non-object
$data = file_get_contents($url);
$categories = json_decode($data);
$output = $categories->results->name;
echo $output;
我对php和json很陌生,所以我不太确定自己在做什么。谢谢您的帮助。
答案 0 :(得分:1)
您的代码无法正常工作,因为$categories->results
不是对象,而是数组。
您可以像这样访问数组中第一个对象的名称:
$categories->results[0]->name;
如果要获取所有名称,则可以循环或映射到数组:
array_map(function ($category) {
return $category->name;
}, $categories->results);