JSON解析与jQuery

问题描述:

我有一个JSON文件看起来像这样:JSON解析与jQuery

{ 
    "status": 200, 
    "data": { 
     "employeeId": "515552", 
     "firstName": "Name", 
     "lastName": "LastName", 
     "locationName": "Location Name", 
     "businessUnitName": "Unit", 
     "workPhone": "212/465-5555", 
     "cellPhone": "646/261-5555", 
     "faxNumber": "", 
     "assistant": "", 
     "email": "[email protected]", 
     "reportsTo": [ 
      { 
       "employeeId": "533953", 
       "firstName": "Howard", 
       "lastName": "Jacobs", 
       "jobTitle": "EVP Marketing & Sales Teams" 
      } 
     ], 
     "departnemtId": "649654910", 
     "departnemtName": "Action Sports Administration", 
     "jobTitle": "VP Action Sports/Transform Dev" 
    } 
} 

我使用Ajax调用的数据推到一个数组,但我似乎无法找出正确的方法去到reportsTo数据。它的最后一个和我得到Undefined

// Load the Employee Details on the index.page 
$.ajax({ 
      url: "user-details-515552.json", 
      cache: true, 
      dataType : 'json', 

      success : function(results) { 
       var employeeData = []; 
        employeeData.push({ 
         assistant: results.data.assistant, 
         departmentID: results.data.departnemtId, 
         departmentName: results.data.departnemtName, 
         locationName: results.data.locationName, 
         reportsToName: results.data.reportsTo.employeeId 
        }); 

       $('#employee-details').tmpl(employeeData).appendTo('#results-container'); 

      } 

     }); 
+0

reportsTo是一个数组,会不会有多个人的情况? – charlietfl 2012-02-28 17:40:30

+0

是的,会有的。 – Xtian 2012-02-28 17:46:33

上级是包含数组([])一个对象({}),所以你将需要访问该阵列的第一个元素([0])第一:

results.data.reportsTo[0].employeeId 
+0

谢谢。说得通。 – Xtian 2012-02-28 17:41:56

我觉得你的问题是这样的:在这里您尝试通过对象的属性名称得到它:

reportsToName: results.data.reportsTo.employeeId 

然而,你在一个数组,使得这种早些时候:

"reportsTo": [ 
      { 
       "employeeId": "533953", 
       "firstName": "Howard", 
       "lastName": "Jacobs", 
       "jobTitle": "EVP Marketing & Sales Teams" 
      } 
     ], 

我不知道..但我认为解决的办法是设置

results.data.reportsTo.employeeId 

results.data.reportsTo[0].employeeId 

(虽然不肯定。)可能更容易只删除在[] ..

$.each(json.data.reportsTo,function(k,v){ 
console.log(v.firstName); 
}); 

http://jsfiddle.net/pCAQp/5/

从数组

console.log(json.data.reportsTo[0].firstName); 

http://jsfiddle.net/pCAQp/9/

得到一个单一的价值在这种情况下reportsTo是一个数组(见[]):

{ // ... 
    "data" : { 
    // ... 
    "reportsTo": [ 
     { "employeeId": "533953", 
     // ... 
     } 
    ], 
    // ... 
} 

...所以你需要提供一个数组索引,例如:

results.data.reportsTo[ 0 ].employeeId 

for (var reportsTo in results.data.reportsTo){ 
    //use reportsTo 
}