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
相关产品推荐
相关产品推荐

