检查JSON中的子键/值对

时间:2011-08-18 07:50:37

标签: javascript jquery json

我需要确定我的JSON Feed是否具有子键/值对并以不同方式处理它们。我的意思是:

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

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

我如何识别此JSON具有那些子(“相关”)键/值对?

2 个答案:

答案 0 :(得分:6)

将JSON字符串解析为JavaScript对象后(请参阅greengit的答案),您有三个选择:

  • typeof obj.related !== 'undefined'
  • obj.related !== undefined。使用undefined变量时要小心,可以通过其他脚本进行更改。如果您正在使用它,请确保将代码包装在匿名函数中,并将其设置为正确的值 - 请参阅Javascript Garden,在“处理对未定义值的更改”下
  • 'related' in obj
IIRC,使用in应该是最快的

更新我反而记得 - in最慢​​这样做的方式,大幅度(98%!)。此外,使用typeof obj.key !== 'undefined'要比obj.key !== undefined快得多(后者慢80%)。请参阅http://jsperf.com/in-vs-not-undefined

答案 1 :(得分:2)

将JSON转换为JS对象,看看你想要的是undefined

var obj = JSON.parse(json_string);

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