JavaScript中提取嵌套JSON指定数据的实现方法
实现方案
你原有代码存在两个问题:
- 解析JSON后赋值的变量名为
alldata,后续访问时写的usedata属于未定义变量,运行会直接抛出引用错误 - 属性访问没有匹配正确的层级和大小写,且额外包裹方括号会生成不必要的嵌套数组。
直接使用以下代码即可拿到目标数据:
// 将JSON字符串解析为JS对象 var alldata = JSON.parse(jsondata); // 按层级访问:顶层Data属性 -> 其下存储气象记录的data数组 var finaldata = alldata.Data.data;
注意事项
- JS对象属性访问严格区分大小写,目标数据在大写开头的
Data属性下,不能写为小写data,否则会返回undefined - 不需要在取值时额外包裹方括号:如果写为
[alldata.Data.data],得到的是一个长度为1的外层数组,其内部唯一元素才是你需要的气象记录数组,会影响后续遍历、数据处理逻辑 - 如果无法保证接口返回的JSON结构完全稳定,可以用可选链操作符做容错,避免中间某层属性缺失导致代码报错:
// 任意一级属性不存在时会返回undefined,这里兜底为空数组方便后续处理 var finaldata = alldata?.Data?.data || [];
取值完成后可以执行
console.log(finaldata)在控制台打印结果校验,正常输出的数组中,每一项都能看到Date、windDir、tmed、wind这些气象字段。
内容的提问来源于stack exchange,提问作者Martín
相关产品推荐
相关产品推荐

