尝试从JSON API获取数据

时间:2019-08-04 02:01:42

标签: php json

我正在做一个很小的项目。我正在尝试从此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很陌生,所以我不太确定自己在做什么。谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的代码无法正常工作,因为$categories->results不是对象,而是数组。

您可以像这样访问数组中第一个对象的名称:

$categories->results[0]->name;

如果要获取所有名称,则可以循环或映射到数组:

array_map(function ($category) {
    return $category->name;
}, $categories->results);