如何访问JSON文件中对象的键值并存储num字段值?
如何从嵌套JSON对象中提取所有
num字段的值? 你的问题出在对JSON结构的访问路径错误,以及没有遍历到正确的层级上。先看一下你的原JSON结构:
{ "001" : { "qwe" : { "num" : 52 } }, "002" : { "qwe1" : { "num" : 53 } }, "003" : { "qwe2" : { "num" : 54 }, "qwe3" : { "num" : 35 } } }
它是三层嵌套:外层是001/002/003这些键,每个对应的值又是一个对象,里面的qwe/qwe1/qwe2/qwe3才是包含num的对象的父键。你之前的代码里用了obj[keys]["Amount"],但你的结构里根本没有Amount这个键,这是第一个错误;第二个错误是没有遍历到最内层的num字段。
这里给你两种可行的解决方案:
方案1:嵌套for循环(直观易懂)
这种方式适合需要清晰看到每一层遍历过程的场景:
const obj = { "001" : { "qwe" : { "num" : 52 } }, "002" : { "qwe1" : { "num" : 53 } }, "003" : { "qwe2" : { "num" : 54 }, "qwe3" : { "num" : 35 } } }; const numValues = []; // 遍历外层的每个键(001、002、003) for (const outerKey of Object.keys(obj)) { const innerParentObj = obj[outerKey]; // 遍历中间层的每个键(qwe、qwe1、qwe2、qwe3) for (const innerKey of Object.keys(innerParentObj)) { // 提取num值并加入数组 numValues.push(innerParentObj[innerKey].num); } } console.log(numValues); // 输出: [52, 53, 54, 35]
方案2:链式数组方法(简洁高效)
如果你喜欢更简洁的写法,可以用Object.values配合flatMap和map来实现:
const obj = { "001" : { "qwe" : { "num" : 52 } }, "002" : { "qwe1" : { "num" : 53 } }, "003" : { "qwe2" : { "num" : 54 }, "qwe3" : { "num" : 35 } } }; const numValues = Object.values(obj) // 把中间层的所有对象展开成一个数组 .flatMap(innerParentObj => Object.values(innerParentObj)) // 提取每个对象里的num值 .map(item => item.num); console.log(numValues); // 输出: [52, 53, 54, 35]
总结一下你之前代码的问题:
- 错误地使用了不存在的键
Amount,应该访问的是num; - 只遍历了外层对象,没有深入到包含
num的内层对象层级。
内容的提问来源于stack exchange,提问作者user15514460
相关产品推荐
相关产品推荐

