2011-08-18 60 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) { 
    ...