2011-10-19 65 views
1

我正在关注JSON响应,但是一些索引有像'Employee Id'这样的空格。这就是为什么我无法解析它。任何人都可以建议用JavaScript解析它的方式吗?解析JQuery中的JSON响应时出现错误,javascript

{ 
    "Employees": [ 
     { 
      "Employee": { 
       "Employee ID": "777", 
       "Short Name": "abc", 
       "First name": null, 
       "Middle name": null, 
       "Last name": null, 
       "Designation": "Senior Engineer", 
       "Ext-1": null, 
       "Ext-2": null, 
       "Mobile-1": null, 
       "Mobile-2": null, 
       "Email": "[email protected]" 
      } 
     }, 
     { 
      "Employee": { 
       "Employee ID": "888", 
       "Short Name": "xyz", 
       "First name": null, 
       "Middle name": null, 
       "Last name": null, 
       "Designation": "Test Lead", 
       "Ext-1": null, 
       "Ext-2": null, 
       "Mobile-1": null, 
       "Mobile-2": null, 
       "Email": "[email protected]" 
      } 
     } 
    ] 
} 

我的代码 -

function GetContacts() { 
    $.ajax({ 
     type: "GET", 
     contentType: 'application/json; charset=utf-8', 
     url: "http://. . . . . .", 

     dataType: "json", 
     success: function(data) { 

      //alert(data.getString("Employee ID")); 
      $.each(data, function(i, contactList) { 

       alert('First Loop' + i); 
       alert('First Loop' + contactList[0]); 

       $.each(contactList, function(j, Contact) { 
        //alert('Second Loop'+Contact); 
        var fnalObj = Contact; 
        //alert(fnalObj); 
        //alert(fnalObj.["Employee"]["Employee ID"]); 
        //alert(Employees[j]["Employee"]["Email"]); 
        //alert(Employees[0]["Employee"]["Employee ID"]); 
        alert(fnalObj.Employee.Email); 
        alert(fnalObj.Employee.Designation); 
        alert(fnalObj.Employee.Ext - 1); 
        alert(fnalObj.Employee.Mobile - 1); 
       }); 
      }); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
      alert(errorThrown); 
      alert(textStatus); 
     } 
    }); 
} 
+2

带空格的键对解析器来说没有问题。 'JSON.parse'和jQuery的解析器可以正常工作。见http://jsfiddle.net/4jqQw/ ...所以问题是你的实际问题是什么? –

+0

我认为你可以使用'Employees [0] [“Employee”] [“Employee ID”]而不是'Employees [0] .Employee.Employee ID'(这是不正确的),但我不是100%肯定 –

+0

我把你的JSON放到http://jsonlint.com中,它会以有效的JSON形式出现,所以解析器不应该打破这个。你在使用什么解析器?你能否将你的解析尝试中的代码粘贴到你的错误中? – Liam

回答

3

解析是好的。

的问题是访问其由非alhpanumeric字符键..像空格,破折号等等。

这些性质必须与[]符号这样

演示来处理at http://jsfiddle.net/h9sbn/

+0

感谢它的工作。 。 。 – ashu

2

你不能这样做fnalObj.Employee.Ext - 1。正确的做法是fnalObj.Employee['Ext-1']。这里是的jsfiddle http://jsfiddle.net/naryad/VNXa5/1/

当使用fnalObj.Employee.Ext - 1,它就会被解析为undefined - 1这反过来将返回NaN

同样适用于fnalObj.Employee.Mobile - 1

0
$.each(contactList, function(j, Contact) { 
    //alert('Second Loop'+Contact); 
    var fnalObj = Contact; 
    $.each(finalObj, function (key, value) { 
     var newKey = key.replace(/[\s]\-/g, '_'); 
     delete finalObj[key]; 
     finalObj[newKey] = value; 
    }); 
    //revised alerts here. 
});