You need to enable JavaScript to run this app. Codeigniter 3 如何解析API返回的JSON数据并访问内部字段
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter 3 如何解析API返回的JSON数据并访问内部字段

问题原因

API返回的原始内容是JSON字符串类型,未经过解析的字符串不是PHP对象,无法直接通过->语法访问属性,因此会触发「Trying to get property 'result' of non-object」报错。你之前的写法都是假设$json已经是解析后的对象,缺少了JSON解析的步骤。

正确实现方式

1. 对象格式访问(和你原有写法适配)

使用json_decode()解析JSON字符串为PHP对象,第二个参数留空或设为false即可:

// 获取接口返回的原始JSON字符串
$raw_json = $this->get_json_data();
// 解析为PHP对象
$json = json_decode($raw_json);
// 正常访问字段
$message_id = $json->result->message_id;

2. 数组格式访问(可选)

如果习惯用数组方式取值,将json_decode()第二个参数设为true,解析结果为关联数组:

$raw_json = $this->get_json_data();
$json_arr = json_decode($raw_json, true);
$message_id = $json_arr['result']['message_id'];

额外优化建议

可以增加JSON解析有效性判断,避免接口返回异常、JSON格式错误时触发新的报错:

$raw_json = $this->get_json_data();
$json = json_decode($raw_json);

// 判断解析结果有效,且目标字段存在
if (json_last_error() === JSON_ERROR_NONE && isset($json->result->message_id)) {
    $message_id = $json->result->message_id;
} else {
    // 自定义异常处理逻辑,比如记录日志、返回错误提示
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 18:12:01