2017-03-16 79 views
0

我目前正在开发一个REST API /网站项目,其中我的REST API必须通过响应并使用GSON从数据中返回一个Json数组,从服务器返回一个对象数组。但是,当试图从网站的JavaScript数组中获取值时,我一直未定义。这是数组:Javascript数组值未定义?

var userArr =[ 
    { 
    "0x1": { 
     "firstName": "Test1", 
     "lastName": "Test1", 
     "hobbies": [ 
     { 
      "id": 1, 
      "name": "Fodbold", 
      "people": [ 
      "0x1" 
      ] 
     } 
     ], 
     "id": 1, 
     "address": { 
     "id": 1, 
     "street": "Street1", 
     "cityInfo": { 
      "id": 1, 
      "zipCode": "0555", 
      "city": "Scanning" 
     }, 
     "infoList": [ 
      "0x1", 
      "0x2" 
     ] 
     }, 
     "phones": [ 
     { 
      "id": 1, 
      "number": "123124", 
      "info": "0x1" 
     } 
     ] 
    } 
]; 

当我尝试调用userArr [0] .firstName,我得到一个错误,说这是不确定的,即使数据是存在的。这是来自get调用,我正在从我的REST API执行JavaScript操作,该REST API发回此特定数组。我已经尝试循环数组,内部有多个对象,但是我无法检索任何信息。

+0

你应该做'userArr [0] [“为0x1”] firstName',你有两个嵌套对象 – Telokis

+0

阿克巴上将:!*它的一个错字* –

回答

2

您的userArr是一组没有firstName属性的对象。由于某种原因,他们只有一个名为0x1的房产。而这0x1财产有firstName财产。

userArr[0]["0x1"].firstName 

这里的工作演示:

你可以使用这个标志的0x1财产firstName访问

var userArr = [{ 
 
    "0x1": { 
 
    "firstName": "Test1", 
 
    "lastName": "Test1", 
 
    "hobbies": [{ 
 
     "id": 1, 
 
     "name": "Fodbold", 
 
     "people": [ 
 
     "0x1" 
 
     ] 
 
    }], 
 
    "id": 1, 
 
    "address": { 
 
     "id": 1, 
 
     "street": "Street1", 
 
     "cityInfo": { 
 
     "id": 1, 
 
     "zipCode": "0555", 
 
     "city": "Scanning" 
 
     }, 
 
     "infoList": [ 
 
     "0x1", 
 
     "0x2" 
 
     ] 
 
    }, 
 
    "phones": [{ 
 
     "id": 1, 
 
     "number": "123124", 
 
     "info": "0x1" 
 
    }] 
 
    } 
 
}]; 
 

 
console.log(userArr[0]["0x1"].firstName);

顺便说一句,有缺少一个右}在您的代码中数组的末尾。

+0

请原谅我的愚蠢...谢谢你这么多兄弟! –

0

试试这个

userArr[0]["0x1"].firstName 
0

柜面价值"0x1"是动态的,您可以通过使用Object.keys(userArr[0])[0]来获取对象的第一个键访问它。

这里是解决方案:

var userArr = [{ 
 
    "0x1": { 
 
    "firstName": "Test1", 
 
    "lastName": "Test1", 
 
    "hobbies": [{ 
 
     "id": 1, 
 
     "name": "Fodbold", 
 
     "people": [ 
 
     "0x1" 
 
     ] 
 
    }], 
 
    "id": 1, 
 
    "address": { 
 
     "id": 1, 
 
     "street": "Street1", 
 
     "cityInfo": { 
 
     "id": 1, 
 
     "zipCode": "0555", 
 
     "city": "Scanning" 
 
     }, 
 
     "infoList": [ 
 
     "0x1", 
 
     "0x2" 
 
     ] 
 
    }, 
 
    "phones": [{ 
 
     "id": 1, 
 
     "number": "123124", 
 
     "info": "0x1" 
 
    }] 
 
    } 
 
}]; 
 

 
console.log(userArr[0][Object.keys(userArr[0])[0]].firstName);

1

我想如果你这样就很容易理解和发现问题

var userArr =[ 
    { 
    "0x1": { 
     "firstName": "Test1", 
     "lastName": "Test1", 
     "hobbies": [{"id": 1,"name": "Fodbold","people": ["0x1"]}], 
     "id": 1, 
     "address": {"id": 1,"street": "Street1","cityInfo": {"id": 1,"zipCode": "0555","city": "Scanning"}, 
     "infoList": ["0x1","0x2"]}, 
     "phones": [{"id": 1,"number": "123124","info": "0x1"}] 
    } 
    } 
]; 

还缺少编写代码最后一个括号。 然后,你可以使用这个console.log(userArr[0]["0x1"].firstName);