2017-08-11 125 views
-2

因此,在java脚本中,我需要从json中获取密钥的值。但是,如果我给钥匙的对象点名称,然后能够得到它。在java脚本中获取json密钥的值(将密钥名称存储在变量中并使用它)

<script> 
var text = '{"employees":[' + 
'{"firstName":"John","lastName":"Doe" },' + 
'{"firstName":"Anna","lastName":"Smith" },' + 
'{"firstName":"Peter","lastName":"Jones" }]}'; 

obj = JSON.parse(text); 
document.getElementById("demo").innerHTML = 
obj.employees[1].firstname + " " + obj.employees[1].lastName; 
</script> 

但是,如果我存储在一个变量中键的名称,并用它来获取键,然后它不是为我工作的价值。

<script> 
var text = '{"employees":[' + 
'{"firstName":"John","lastName":"Doe" },' + 
'{"firstName":"Anna","lastName":"Smith" },' + 
'{"firstName":"Peter","lastName":"Jones" }]}'; 

obj = JSON.parse(text); 
fn="firstname"; 
ln="lastname"; 
document.getElementById("demo").innerHTML = 
obj.employees[1].fn + " " + obj.employees[1].ln; 
</script> 

我可以理解它正在寻找与fn和ln密钥的问题。任何人都可以解释我怎样才能得到密钥名称存储的变量的值。

+0

使用括号符号来访问在这种情况下https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors值 – Manish

+0

它应该是'firstName'和不'firstname'。请注意,'n'是大写 –

回答

0

我想更详细地说明了一点,为什么你的代码不能正常运行的原因。这是因为JavaScript解释点符号后的内容。

fn="firstName"; 
obj.employees[1].fn; 

在这种情况下,obj.employees [1] .fn将返回undefined,因为JavaScript是寻找关于OBJ所谓的 “FN” 的属性,尽管FN是一个变量的名称。但是,使用括号表示法“解开”存储在变量中的字符串,并使用它来获取属性键。就像在其他答案中提到的那样,用动态变量获取键的正确方法是使用括号表示法。

obj.employees[0][fn]; 
2

var obj = JSON.parse('{"employees":[' + 
 
'{"firstName":"John","lastName":"Doe" },' + 
 
'{"firstName":"Anna","lastName":"Smith" },' + 
 
'{"firstName":"Peter","lastName":"Jones" }]}') 
 

 
var fn = "firstName"; 
 
var ln = "lastName"; 
 

 
console.log(obj.employees[0][fn]); 
 
console.log(obj.employees[0][ln]);

他们可以这样访问:

firstname = obj.employees[1][fn] 
lastname = obj.employees[1][ln]