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

file_get_contents获取JSON后json_decode无结果,求助转数组/对象

解决json_decode解析失败的问题

我来帮你搞定这个JSON解析的问题!首先咱们得先搞清楚为什么json_decode没返回结果,然后一步步解决:

第一步:排查JSON解析失败的原因

当json_decode返回null或者没有结果时,大概率是JSON格式有问题(或者获取到的内容本身就不是有效的JSON)。你可以通过json_last_error()和json_last_error_msg()来查看具体错误,这是排查这类问题的关键。

试试这段代码先确认问题:

$val = file_get_contents('https://example.com/getStatsData');

// 先检查是否成功获取到内容
if ($val === false) {
    die("无法获取统计数据,请检查URL是否正确或服务器是否可达");
}

// 尝试解析JSON,第二个参数设为true会返回关联数组(方便操作)
$result = json_decode($val, true);

// 检查解析是否出错
if (json_last_error() !== JSON_ERROR_NONE) {
    echo "JSON解析错误:" . json_last_error_msg();
    exit;
}

第二步:成功解析后提取数据

从你提供的JSON内容来看,结构是嵌套数组的形式:

{"msg":"success","data":[[{"stats_abc":"1223","stats_bcd":"55684","stats_cda":"14999","stats_def":232456,"stats_efg":"432868","stats_fgh":"7558","stats_ghi":"3,778.72","stats_date":"20-01-2018 17:00 PM"}],null]}

解析后,$result会是一个关联数组,你可以这样提取统计数据:

// 确认请求成功
if ($result['msg'] === 'success') {
    // 提取目标统计数据(注意data是数组套数组,第一个元素里的第一个元素才是我们要的统计数据)
    $statsArray = $result['data'][0][0];
    
    // 现在你可以直接访问各个统计字段了
    echo "stats_abc的值:" . $statsArray['stats_abc'];
    echo "<br>";
    // 如果需要把带逗号的数字字符串转成数值,可以做额外处理
    $statsGhi = (float)str_replace(',', '', $statsArray['stats_ghi']);
    echo "转成数值后的stats_ghi:" . $statsGhi;
}

可能的隐藏问题

  • 如果file_get_contents获取的内容带有UTF-8 BOM头,会导致JSON解析失败,你可以用这段代码去除:
$val = preg_replace('/^\x{EF}\x{BB}\x{BF}/', '', $val);
  • 你也可以先执行var_dump($val),确认获取到的内容和你提供的JSON完全一致,没有多余的空格、换行或其他非JSON字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:42:32