如何使用 javascript 变量访问 JSON 对象

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/6010309/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-25 19:08:34  来源:igfitidea点击:

How do I access a JSON object using a javascript variable

javascriptjson

提问by Rudacles

What I mean by that is say I have JSON data as such:

我的意思是说我有这样的 JSON 数据:

[{"ADAM":{"TEST":1}, "BOBBY":{"TEST":2}}]

and I want to do something like this:

我想做这样的事情:

var x = "ADAM";
alert(data.x.TEST);

回答by n0nick

var data = [{"ADAM":{"TEST":1}, "BOBBY":{"TEST":2}}],
    x = "ADAM";

alert(data[0][x].TEST);

http://jsfiddle.net/n0nick/UWR9y/

http://jsfiddle.net/n0nick/UWR9y/

回答by DoXicK

Since objects in javascripts are handled just like hashmaps (or associative arrays) you can just do data['adam'].TEST just like you could do data.adam.TEST. If you have a variable index, just go with the [] notation.

由于javascripts中的对象就像hashmap(或关联数组)一样处理,你可以像data.adam.TEST一样执行data['adam'].TEST。如果您有一个变量索引,只需使用 [] 表示法。

var data = [{"ADAM":{"TEST":1}, "BOBBY":{"TEST":2}}]
alert(data[0].ADAM.TEST);
alert(data[0]['ADAM'].TEST)

if you just do

如果你只是这样做

var data = {"ADAM":{"TEST":1}, "BOBBY":{"TEST":2}};

you could access it using data.ADAM.TEST and data['ADAM'].TEST

您可以使用 data.ADAM.TEST 和 data['ADAM'].TEST 访问它

回答by Ceterisdev

 var data = [{"ADAM":{"TEST":1}, "BOBBY":{"TEST":2}}],
 x = "ADAM";

alert(data[x].TEST);

This is what worked for me. This way you can pass in a variable to the function and avoid repeating you code.

这对我有用。通过这种方式,您可以将变量传递给函数并避免重复代码。

function yourFunction(varName, elementName){
//json GET code setup
document.getElementById(elementName).innerHTML = data[varName].key1 + " " + data.[varName].key2;
}

回答by Matthew Abbott

That won't work as you're setting xto be a string object, no accessing the value from your array:

当您设置x为字符串对象时,这将不起作用,无法访问数组中的值:

alert(data[0]["ADAM"].TEST);