我正在使用curl在PHP中提出JSON请求。我已将响应存储在名为$registerCompany
的变量中,并将其打印在屏幕上以查看返回了什么,我通过打印变量来得到以下响应
{
resultCode: "duplicate",
result: {
isValid: true,
referenceKey: "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"
},
success: false
}
当我尝试获取其$registerCompany->resultCode
之类的属性时,我知道这是一个对象,我收到以下错误:
试图获取非对象的属性“ resultCode”
这是怎么回事,任何人都可以帮忙
这是我的PHP代码
function enquiry_company($data) {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "hidden",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
"content-type: application/json",
"x-api-key: hidden"
],
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
]);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
$api_data = [
"identityNumber" => 123456789,
"commercialRecordNumber" => 123456789,
"commercialRecordIssueDateHijri" => 01-01-2000,
"phoneNumber" => 00000000000,
"extensionNumber" => 0,
"emailAddress" => mail@mail.com,
"managerName" => 'Manager',
"managerPhoneNumber" => 000000000,
"managerMobileNumber" => 000000000,
];
$registerCompany = enquiry_company($api_data);
echo $registerCompany;
$registerCompany = json_decode($registerCompany, true);
$registerCompany = (object) $registerCompany;
echo $registerCompany->resultCode;
谢谢
答案 0 :(得分:2)
如果使用$registerCompany = json_decode($registerCompany)
返回数组,则将输出一个对象。
如果您做了$registerCompany = json_decode($registerCompany, true)
,这将为您提供数组而不是对象。
答案 1 :(得分:1)
假设您的响应是一个数组
首先将您的数组转换为一个对象
$registerCompany = (object)$registerCompany;
然后在这里,您的数组现在是一个对象,可以访问
echo $registerCompany->resultCode;
答案 2 :(得分:1)
首先使用gettype
来查看变量的类型。
http://www.php.net/manual/en/function.gettype.php
从那里开始,您有三种可能。一个是它是一个字符串。如果是字符串,则表示它为JSON格式。这意味着您需要对格式进行JSON解码,这样才能正常工作。参见Eli's答案。
两个,它是数组形式。在这种情况下,请使用初学者的答案并将其类型转换为(object) $variableName;