如何在JSON中使用变量作为对象(javascript)

时间:2019-01-26 11:59:29

标签: javascript

var text = '{ "nusers" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"sadsf" , "lastName":"sdasda" },' +
'{ "firstName":"fnSaleh" , "lastName":"lnSaleh" }]}';

var va = "nuser";
 obj = JSON.parse(text);

for(i=0;i< (obj.va.length);i++){

var st = obj.va.firstName;

console.log(st);
}

错误

“未捕获的TypeError:无法读取未定义的属性'length'”

4 个答案:

答案 0 :(得分:3)

您有几个问题。

对于初学者,对于变量属性名称,请使用[]表示法。然后固定va的值以匹配对象属性nusers而不是nuser的对象。最后,使用索引i访问循环中的数组元素

var text = '{ "nusers" : [' +
  '{ "firstName":"John" , "lastName":"Doe" },' +
  '{ "firstName":"Anna" , "lastName":"Smith" },' +
  '{ "firstName":"sadsf" , "lastName":"sdasda" },' +
  '{ "firstName":"fnSaleh" , "lastName":"lnSaleh" }]}';

var va = "nusers";
obj = JSON.parse(text);

for (i = 0; i < (obj[va].length); i++) {

  var st = obj[va][i].firstName;

  console.log(st);
}

答案 1 :(得分:1)

使用变量访问对象属性时,请使用方括号。另外,您还需要获取index,以便obj[va][i].firstName会给出名字

var text = '{ "nusers" : [' +
  '{ "firstName":"John" , "lastName":"Doe" },' +
  '{ "firstName":"Anna" , "lastName":"Smith" },' +
  '{ "firstName":"sadsf" , "lastName":"sdasda" },' +
  '{ "firstName":"fnSaleh" , "lastName":"lnSaleh" }]}';

var va = "nusers";
var obj = JSON.parse(text);
for (var i = 0; i < (obj[va].length); i++) {
  var st = obj[va][i].firstName;
  console.log(st);
}

答案 2 :(得分:1)

首先,在顶部声明所有变量。

然后使用右键('nusers's结尾)访问对象。

要访问对象,您需要一个property accessor,此处带有括号表示法,因为您有一个变量。这对于访问带有索引的数组也是必要的。

var text = '{ "nusers" : [' +
    '{ "firstName":"John" , "lastName":"Doe" },' +
    '{ "firstName":"Anna" , "lastName":"Smith" },' +
    '{ "firstName":"sadsf" , "lastName":"sdasda" },' +
    '{ "firstName":"fnSaleh" , "lastName":"lnSaleh" }]}',
    va = "nusers",
    obj = JSON.parse(text),
    i,
    st;

for (i = 0; i < obj[va].length; i++) {
    st = obj[va][i].firstName;
    console.log(st);
}

答案 3 :(得分:1)

基本上,您的代码中有几个问题。

  1. va ='nuser'->必须为nusers
  2. 每当使用变量访问属性时,都应使用[]表示法访问属性。
  3. 在循环中,您也需要使用索引来访问名字。

var text = '{ "nusers" : [' +'{ "firstName":"John" , "lastName":"Doe" },' +'{ "firstName":"Anna" , "lastName":"Smith" },' +'{ "firstName":"sadsf" , "lastName":"sdasda" },' +'{ "firstName":"fnSaleh" , "lastName":"lnSaleh" }]}';

var va = "nusers";  
var obj = JSON.parse(text);

for(i=0; i< obj[va].length; i++){
  var st = obj[va][i].firstName;
  console.log(st);
}