PHP使用json_decode解析后获取OPT属性报错问题求助
问题:解析CURL响应获取OPT值时报错
我尝试用以下代码将CURL响应存入变量并解析,获取其中的OPT值:
$curl_response = '[OPT: value]'; $obj = json_decode($curl_response); print_r( $obj->OPT);
但执行时出现错误,报错信息如下:
stdClass Object ( [MSISDN] => 03142985338 [OPT] => 161 [ResponceCode] => 0020 [ResponceMessage] => Success ) Notice: Trying to get property 'OPT' of non-object
问题原因及解决方法
1. 测试代码的JSON格式错误
你测试用的$curl_response = '[OPT: value]';不是合法的JSON格式,JSON要求键值对必须用双引号包裹,正确格式应为{"OPT":"value"}。如果是测试场景,先把测试数据改成标准JSON格式。
2. 实际CURL响应存在解析异常
从报错里的stdClass Object来看,实际返回的内容是合法对象,但json_decode却返回了非对象(大概率是null),说明实际的CURL响应可能包含多余字符(比如空格、换行、无关前缀标识等),导致解析失败。
解决步骤:
- 先打印原始响应内容,确认是否存在多余字符:
var_dump($curl_response); - 清理响应内容,比如去除前后空白字符:
$clean_response = trim($curl_response); $obj = json_decode($clean_response); - 增加解析失败的判断逻辑,避免报错:
$obj = json_decode($curl_response); if ($obj !== null && property_exists($obj, 'OPT')) { print_r($obj->OPT); } else { // 输出解析错误原因 echo 'JSON解析失败:' . json_last_error_msg(); }
内容的提问来源于stack exchange,提问作者user20405408
相关产品推荐
相关产品推荐

