尝试获取非对象错误PHP curl的属性

尝试获取非对象错误PHP curl的属性,php,json,api,curl,Php,Json,Api,Curl,我正在尝试使用api来获取水果信息 $fruitStirng = 'apple'; $url = "https://www.fruityvice.com/api/fruit/".$fruitStirng; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($ch); $mai

我正在尝试使用api来获取水果信息

$fruitStirng = 'apple';

$url = "https://www.fruityvice.com/api/fruit/".$fruitStirng;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
    
$main = json_decode($res);
结果应该是这样的:

{ "genus": "Malus", "name": "Apple", "id": 6, "family": "Rosaceae", "order": "Rosales", "nutritions": { "carbohydrates": 11.4, "protein": 0.3, "fat": 0.4, "calories": 52, "sugar": 10.3 } }
$genus = $main->genus;
echo $genus
但例如,当我尝试echo
genus
时,如下所示:

{ "genus": "Malus", "name": "Apple", "id": 6, "family": "Rosaceae", "order": "Rosales", "nutritions": { "carbohydrates": 11.4, "protein": 0.3, "fat": 0.4, "calories": 52, "sugar": 10.3 } }
$genus = $main->genus;
echo $genus
尝试获取非对象的属性“genus”时出现
错误

我也使用了foreach,但也出现了一个错误

Invalid argument supplied for foreach()

由于返回JSON的API使用HTTPS,因此必须配置cURL SSL选项(CURLOPT_SSL_VERIFYPEER)。下面是一个工作代码:

<?php
$fruitString = 'apple';

$url = "https://www.fruityvice.com/api/fruit/".$fruitString;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);

$main = json_decode($res);

$genus = $main->genus;
echo $genus; // Malus

是否
$res
不等于
false
?尝试
var\u转储($res)
如果它是
false
,使用
if(curl\u errno($ch)){$error\u msg=curl\u error($ch);}
来回显错误。可能的错误可能是SSL证书问题:无法获取本地颁发者certificatebool(false)
或其他相关内容。@IhorVyspiansky ops its false