2011-08-18 59 views
1

我需要確定我的JSON供稿是否具有子鍵/值對並對它們進行不同的處理。我的意思是:檢查JSON中的子鍵/值對

{ 
    "dashboard" :[ 
    { 
     "name": "", 
     "image": "", 
     "description":"", 
     "linkurl":"" }, 

    { 
     "name": "", 
     "image": "", 
     "description":"", 
     "linkurl":"" 
     }, 
    "related" : [ 
    { 
     "name": "", 
     "image": "", 
     "description":"", 
     "linkurl":"" 
     }, 
    { 
     "name": "", 
     "image": "", 
     "description":"", 
     "linkurl":"" 
     }] 
    ] 

如何識別這個JSON有那些孩子(「相關」)鍵/值對?

+3

http://jsonlint.com/您的JSON格式不正確 – timdream

回答

6

解析JSON字符串轉換爲JavaScript對象(見greengit的答案)後,你有三種選擇:

  • typeof obj.related !== 'undefined'
  • obj.related !== undefined。使用undefined變量時要小心,它可以通過其他腳本進行更改。如果你正在使用它,一定要包裝你的代碼,它設置爲正確的值匿名函數 - 看Javascript Garden有關,在「處理更改的未定義值」
  • 'related' in obj

IIRC,使用in應該是最快的

更新我記得它周圍的其他方法 - (!98%)in是這樣做的,大幅度的最慢方式。另外,使用typeof obj.key !== 'undefined'obj.key !== undefined快得多(後者慢了80%)。請參閱http://jsperf.com/in-vs-not-undefined

+0

我想使它成爲最喜歡的答案... :( –

2

將JSON轉換爲JS對象,看看你想要的是undefined

var obj = JSON.parse(json_string); 

if (obj.related == undefined) { 
    ...