javascript - 如果键名是变量值,则通过 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
解决方案
删除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']);
推荐阅读
- cherrypy - CherryPy 编码:布尔对象不可迭代
- c# - 如何合并 XML 文件的特定部分
- scala - java.io.FileNotFoundException: 未找到 cos://mybucket.myservicename/checkpoint/offsets
- ios - iOS 推送通知已启用但无法正常工作
- jquery - Laravel 数据表,无法将数据获取到数据表中的视图
- laravel - Laravel Nova 无法与 Laravel Spark 一起使用:位置 1213 的 JSON 中出现意外的令牌 P
- java - 如何使用 session.setAttribute("id", id) onclick java servlet中的按钮?
- rest - 当查询字符串中缺少参数时使用什么状态码?
- objective-c - 如何继续将值从一个 ViewController 传递到第二个 ViewController 并自动关闭,关闭第二个 ViewController
- javascript - 使用 javascript 功能引导自定义标记