PHP中如何从API返回的JSON对象提取products数组?
问题分析与解决
核心问题
你提供的JSON字符串里的引号是HTML实体",并非合法的JSON双引号,导致json_decode解析失败返回null,自然无法提取products数组。
解决步骤
- 解码HTML实体:先用
html_entity_decode()把"转换为真实的双引号,生成合法的JSON字符串。 - 选择正确的访问语法:
- 若
json_decode默认返回对象,使用->语法访问属性,比如$sampleObject->products - 若要返回关联数组,给
json_decode传入第二个参数true,再用['products']下标访问
- 若
修正后的完整代码
<?php // 原始带HTML实体的JSON字符串 $sampleJson = '{"products": [{"id": 6806481862794,"title": "Berry Soap"},{"id": 6806481600650,"title": "Lavender Soap"},{"id": 6806481666186,"title": "Vanilla Soap"},{"id": 6806481993866,"title": "Aloe Soap"}]}'; // 解码HTML实体,得到合法JSON $validJson = html_entity_decode($sampleJson); // 解析为对象(默认模式) $sampleObject = json_decode($validJson); // 用->访问products属性 var_dump($sampleObject->products); echo "<br/>------<br/>"; // 解析为关联数组(第二个参数设为true) $sampleArray = json_decode($validJson, true); // 用数组下标访问products var_dump($sampleArray['products']); ?>
补充说明
- 你之前尝试的
$sampleObject.products是错误语法,PHP对象属性访问必须用->,不能用. $sampleObject[products]错误有两点:一是普通对象不能用数组下标访问;二是products未加引号,会被PHP当作常量解析
内容的提问来源于stack exchange,提问作者turkeyhundt
相关产品推荐
相关产品推荐

