You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中JSON响应预期为布尔值却返回整数,无法读取JSON元素

解决PHP中JSON解析后返回整数的问题

嘿,我之前也踩过这个一模一样的坑!咱们先把问题根源揪出来——你的curl配置少了关键选项,导致curl_exec()返回的不是接口的响应内容,而是curl的执行状态(成功返回1,失败返回0),所以你用json_decode()去解析这个整数,自然得到的就是整数类型了!

一步步修正你的代码:

  1. 添加CURLOPT_RETURNTRANSFER选项:这是核心!让curl把接口响应内容以字符串形式返回,而不是直接输出到页面或者返回执行状态
  2. 完善错误链路处理:不管是curl请求失败,还是JSON格式本身有问题,都能快速定位故障点
  3. 增加调试环节:方便你确认原始响应是否符合预期

修正后的完整代码:

<?php
$url = '...'; // 替换成你的目标接口URL
$curl = curl_init();

// 补充关键的CURLOPT_RETURNTRANSFER选项
curl_setopt_array($curl, array(
    CURLOPT_URL => $url,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_RETURNTRANSFER => true, // 让curl返回响应内容而非执行状态
    CURLOPT_FOLLOWLOCATION => true, // 可选:自动跟随URL跳转
    CURLOPT_SSL_VERIFYPEER => false, // 可选:本地调试时临时关闭SSL验证(生产环境请开启)
));

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

// 先处理curl请求错误
if ($err) {
    echo "CURL请求失败: " . $err;
    exit;
}

// 调试阶段可以先输出原始响应,确认是不是有效的JSON
// echo "原始响应内容: " . $response;

// 解析JSON并检查解析错误
$responseData = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo "JSON解析错误: " . json_last_error_msg();
    exit;
}

// 现在看看解析后的结果
echo "解析后类型: " . gettype($responseData);
print_r($responseData); // 输出完整的解析内容
?>

额外排查建议:

如果还是出现异常,先直接输出$response的原始内容——有可能接口返回的不是JSON(比如返回了HTML错误页面、纯文本提示),这时候json_decode()也会返回null或者异常类型。

内容的提问来源于stack exchange,提问作者hello_its_me

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:52:12