首页 > 解决方案 > 如果键名是变量值,则通过 json 键获取 json 值

问题描述

我有 json 字符串,想按键获取一个值,但键名是某个变量的值。为了解决这个问题,我发现了这个

window[varName]

并尝试使用如下

<script>
var jsonStr = '{"someProperty":"Value of someProperty","somePropertyAndSuffix":"Value of somePropertyAndSuffix"}';
var jsonObj = JSON.parse(jsonStr);

var propAsString = 'someProperty';

console.log(jsonObj.window[propAsString]);
console.log(jsonObj.window[propAsString]+'AndSuffix');
</script>

但我得到了错误

未捕获的类型错误:无法读取未定义的属性“someProperty”

如果我尝试

console.log(jsonObj[window[propAsString]]);
console.log(jsonObj[window[propAsString]+'AndSuffix']);

我得到两个undefined

标签: javascript

解决方案


删除window它会起作用。jsonObj将可以在window( window.jsonObj) 上访问,因为 javascript将使用 var 的分配提升到最近的范围(在本例中为窗口)。

var jsonStr = '{"someProperty":"Value of someProperty","somePropertyAndSuffix":"Value of somePropertyAndSuffix"}';
var jsonObj = JSON.parse(jsonStr);

var propAsString = 'someProperty';

console.log(jsonObj[propAsString]);
console.log(jsonObj[propAsString + 'AndSuffix']);


推荐阅读