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

本地环境PHP从URL获取黄金价格数据失败及需求咨询

解决PHP获取黄金价格的报错与克价获取问题

咱们一步步拆解问题,把它解决掉:

问题根源分析

你遇到的Trying to get property 'xxx' of non-object报错,核心原因是json_decode(curl_exec($curlSession))没有返回预期的对象。大概率是curl请求未成功获取有效JSON数据,导致$jsonData是null或者非对象类型,后续访问它的属性自然就报错了。

常见的触发原因包括:

  • 本地环境的SSL证书验证失败(目标网站是HTTPS协议)
  • curl请求本身出错(比如网络问题、URL拼写错误)
  • 返回的内容不是标准的JSON格式

修复步骤与完整代码

下面是修复后的代码,包含错误处理、本地SSL适配,以及正确获取黄金克价的逻辑:

<?php
$curlSession = curl_init();
// 设置目标请求URL
curl_setopt($curlSession, CURLOPT_URL, 'https://data-asg.goldprice.org/dbXRates/USD');
// 本地环境临时禁用SSL证书验证(生产环境建议配置可信证书,不要用这两行)
curl_setopt($curlSession, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYHOST, false);
// 要求curl返回结果而非直接输出到页面
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);

// 执行请求并捕获响应内容
$response = curl_exec($curlSession);

// 检查curl请求是否失败
if ($response === false) {
    echo 'Curl请求出错: ' . curl_error($curlSession);
    curl_close($curlSession);
    exit;
}

// 解析JSON数据,第二个参数设为true转成关联数组(也可以保持对象模式,看个人习惯)
$jsonData = json_decode($response, true);

// 检查JSON解析是否成功
if ($jsonData === null) {
    echo 'JSON解析失败: ' . json_last_error_msg();
    curl_close($curlSession);
    exit;
}

// 提取日期和黄金克价(接口返回的xauGramPrice就是美元计价的克价)
$date = $jsonData['date'];
$gold_gram_price = $jsonData['items'][0]['xauGramPrice'];

echo "黄金价格(美元/克):{$gold_gram_price},日期:{$date}";

curl_close($curlSession);
?>

关键细节说明

  1. SSL验证适配:本地XAMPP环境默认缺少可信SSL证书,所以临时禁用验证(生产环境必须配置合法证书,不能用这两行)。
  2. 错误排查机制:新增了curl请求失败、JSON解析失败的检查,方便你快速定位问题。
  3. 克价字段匹配:目标接口返回的JSON里,xauGramPrice就是你需要的黄金克价(美元/克),xauPrice是盎司价,直接取用即可。
  4. 数组/对象模式可选:代码里用关联数组访问数据,比对象模式更不容易出现属性访问报错;如果你习惯用对象,去掉json_decode的第二个参数即可,但要确保$jsonData是有效对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:19:53