如何在foreach循环中提取嵌套对象networks下的ssid值?
没问题,我来帮你搞定这个需求!首先得先修正你这段JSON里的语法错误,不然解析的时候会报错:
- 键名
0、1最好用引号包裹(标准JSON要求键必须是字符串) - 第二个
ssid的值jkl少了开头的双引号 - 第一个对象里的
rssi":"test",多了末尾的逗号
修正后的标准JSON
{"networks":{ "0": { "ssid":"asdf", "rssi":"test" }, "1": { "ssid":"jkl", "rssi":"fubar" } }}
下面给你两种常用语言的foreach循环实现示例:
PHP 实现方式
<?php // 解析修正后的JSON字符串为关联数组 $jsonStr = '{"networks":{ "0": { "ssid":"asdf", "rssi":"test" }, "1": { "ssid":"jkl", "rssi":"fubar" } }}'; $networkData = json_decode($jsonStr, true); // 遍历networks下的所有子对象 foreach ($networkData['networks'] as $key => $item) { // 提取并输出ssid值 echo "编号{$key}的SSID:{$item['ssid']}\n"; } ?>
运行后输出:
编号0的SSID:asdf 编号1的SSID:jkl
JavaScript 实现方式
// 如果是JSON字符串,先通过JSON.parse解析为对象 const networkData = JSON.parse('{"networks":{ "0": { "ssid":"asdf", "rssi":"test" }, "1": { "ssid":"jkl", "rssi":"fubar" } }}'); // 方式一:遍历键名获取对应对象 for (const key in networkData.networks) { const ssid = networkData.networks[key].ssid; console.log(`编号${key}的SSID:${ssid}`); } // 方式二:直接遍历对象值(不需要键名时更简洁) Object.values(networkData.networks).forEach((item, index) => { console.log(`编号${index}的SSID:${item.ssid}`); });
控制台输出:
编号0的SSID:asdf 编号1的SSID:jkl
内容的提问来源于stack exchange,提问作者chetana
相关产品推荐
相关产品推荐

