PHP GET JSON请求报错:stdClass对象无法转为字符串求助
PHP JSON GET请求报错解决:stdClass无法转为字符串
错误原因
你触发的Recoverable fatal error本质是类型不匹配:json_decode($response)默认返回stdClass对象,而echo只能输出字符串类型,直接打印对象会触发类型转换失败。
解决步骤
排查请求是否正常
在CURL执行后添加错误检查,确认API请求本身没有失败:$response = curl_exec($curl); if(curl_errno($curl)){ echo 'CURL错误:' . curl_error($curl); } curl_close($curl);正确处理JSON解析结果
有两种常用方式:- 转为关联数组:将
json_decode的第二个参数设为true,返回数组后可直接用print_r/var_dump输出:$datas = json_decode($response, true); echo '<pre>' . print_r($datas, true) . '</pre>'; - 直接输出或格式化对象:如果保留对象类型,用
print_r(需传入第二个参数true转为字符串)或var_dump查看内容;也可以直接输出原始JSON响应:// 输出原始JSON echo $response; // 格式化输出对象 echo '<pre>' . print_r($datas, true) . '</pre>';
- 转为关联数组:将
修正后的完整代码
整合错误检查与正确输出的示例代码:ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://domain/api/customers/2180', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authtoken: eyJ0eXAiOiJKV1QiLCJh' ), )); $response = curl_exec($curl); // 检查CURL请求错误 if(curl_errno($curl)){ die('CURL请求失败:' . curl_error($curl)); } curl_close($curl); // 解析为关联数组 $datas = json_decode($response, true); // 检查JSON解析错误 if(json_last_error() !== JSON_ERROR_NONE){ die('JSON解析失败:' . json_last_error_msg()); } // 格式化输出数据 echo '<pre>'; print_r($datas); echo '</pre>';
额外提示
- 确认你的AuthToken完整有效(示例中Token明显被截断,可能导致API返回非JSON错误信息)
- 参考对应API文档,确保请求URL、请求头参数符合要求
内容的提问来源于stack exchange,提问作者olivier
相关产品推荐
相关产品推荐

