2012-01-18 112 views
0

我有這兩個JSON對象處理多層次的JSON

"field_contact_phone": { 
    "el": [ 
     { 
      "value": "+30 123455", 
      "format": null, 
      "safe_value": "+30 123455" 
     } 
    ] 
} 

"field_contact_phone": { 
    "el": [ 
     { 
      "value": "12342352352", 
      "format": null, 
      "safe_value": "12342352352" 
     }, 
     { 
      "value": "5454364576547", 
      "format": null, 
      "safe_value": "5454364576547" 
     } 
    ] 
} 

雖然我能夠成功地解析第二個目的與線

var popup = 'Τηλέφωνο: '+data.field_contact_phone.el[0].value; 

當我嘗試解析第一個我得到那個錯誤

Uncaught TypeError: Cannot read property 'el' of undefined at file:///android_asset/www/main.js:390

+0

這個JSON本身是無效的。請提供完整的示例併發布您的代碼。 – 2012-01-18 12:19:20

+0

完整的json對象不過是field_contact_phone等其他字段元素。在問題中編輯產生錯誤的完整行。 – 2012-01-18 12:23:00

+0

那麼,沒有更多的信息,我們不能幫你。代碼是正確的,據我所知。所以'數據'​​似乎不是你認爲它在第二種情況。在訪問此屬性並驗證其值之前,檢查'data'。 – 2012-01-18 12:24:21

回答

0

你的JSON驗證正確,並在我身邊工作。只需要用大括號包裝內容(請參閱下文)

var v1={ 
    "field_contact_phone": { 
     "el": [ 
      { 
       "value": "+3", 
       "format": null, 
       "safe_value": "+3" 
      } 
     ] 
    } 
}; 

var v2={ 
    "field_contact_phone": { 
     "el": [ 
      { 
       "value": "12342352352", 
       "format": null, 
       "safe_value": "12342352352" 
      }, 
      { 
       "value": "5454364576547", 
       "format": null, 
       "safe_value": "5454364576547" 
      } 
     ] 
    } 
}; 
console.log(v1.field_contact_phone.el[0].value); // +3
console.log(v2.field_contact_phone.el[0].value); //12342352352 
+0

完整的json被包裹在大括號中,因爲敏感數據我只是沒有包含它。實際上它來自Drupal Services節點輸出。 – 2012-01-18 12:28:09

+0

你能跟蹤main.js中的錯誤嗎?您應該已經提供了該代碼而不是json數據。 – 2012-01-18 12:30:40

+0

行390是我發佈的,創建彈出變量。 – 2012-01-18 12:33:19