如何通过PHP从JSON字符串中提取特定数据?
修复JSON结构并提取特定数据
首先你的JSON格式存在错误,导致无法正确解析,以下是具体修正和提取数据的方法:
- 修正无效JSON结构
原JSON中toppings下的data字段未将多个对象包裹为数组,属于格式错误。修正后的JSON应将data的值用[]包裹,形成合法的数组结构:
$json = ' { "type": "donut", "name": "Cake", "toppings": [{ "data": [ { "id": "5002", "type": "Glazed" }, { "id": "5006", "type": "Chocolate with Sprinkles" }, { "id": "5004", "type": "Maple" } ] }] }';
- 对象方式提取数据(默认解析方式)
使用json_decode默认解析为对象后,可通过对象属性链访问目标数据:
$yummy = json_decode($json); // 提取data数组中第三个元素的id(索引从0开始) echo $yummy->toppings[0]->data[2]->id; // 输出 5004
- 关联数组方式提取数据
若习惯数组操作,可给json_decode传入第二个参数true,将JSON解析为关联数组:
$yummy = json_decode($json, true); echo $yummy['toppings'][0]['data'][2]['id']; // 输出 5004
- 排查解析错误
如果不确定JSON是否合法,可使用json_last_error()检查解析状态:
$yummy = json_decode($json); if (json_last_error() !== JSON_ERROR_NONE) { echo 'JSON解析错误:' . json_last_error_msg(); }
内容的提问来源于stack exchange,提问作者Lol
相关产品推荐
相关产品推荐

