JavaScript中如何使用变量动态访问JSON文件的嵌套属性
JavaScript动态访问JSON对象字段实现方法
问题相关代码
原有错误实现:
let file = require('./file.json') let someVar = 'firstField' console.log(file.firstObject.{someVar})
对应引入的JSON文件内容:
{ "firstObject": { "firstField":"firstValue", "secondField":"secondValue", "thirdField":"thirdValue" }, "otherObject": { "otherField":"otherValue" } }
预期效果:代码运行后控制台输出firstValue。
注意:原示例JSON里
thirdValue字段末尾多余的逗号会导致标准JSON解析失败,实际使用时需要删掉这个尾逗号。
错误原因
JavaScript中,点运算符(.)仅支持访问固定名称的对象属性,file.firstObject.{someVar}属于语法错误,无法被JS引擎识别。
正确写法
使用方括号语法访问动态属性名,修正后代码如下:
let file = require('./file.json') let someVar = 'firstField' console.log(file.firstObject[someVar])
语法规则说明
JS访问对象属性只有两种合法语法:
- 点号语法:
对象.固定属性名,仅适用于属性名提前已知、是合法标识符的静态场景 - 方括号语法:
对象[属性名表达式],方括号内可以传入变量、字符串、任意表达式,引擎会先计算表达式的结果,再用结果作为属性名查找对应值,完全适配动态属性访问的需求。
运行上述修正后的代码,控制台即可正常输出预期的firstValue。
内容的提问来源于stack exchange,提问作者gregor
相关产品推荐
相关产品推荐

