2011-10-19 11 views
1

JSONレスポンスとして次のようになりましたが、一部のインデックスに「Employee Id」のようなスペースがあります。だから私はそれを解析することができません。誰でもJavaScriptで解析する方法を提案できますか?JQuery、JavaScriptのJSONレスポンスの解析でエラーが発生しました

{ 
    "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を使用している場合、それは順番にあなたが同じNaN

を返すundefined - 1に解決さ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. 
}); 
関連する問題