如何识别JSON对象是否嵌套

时间:2015-07-13 13:25:30

标签: javascript ajax json

我通过ajax调用从JSP页面获取javascript页面上的JSON对象。我想知道它是否是嵌套的JSON对象。 例如: 一个简单的JSON对象如下所示:

_JQ('#rightMenu').mmenu({        
    dragOpen: true
}, {
    // configuration
    clone: true
});

_JQ('#leftMenu').mmenu({        
    dragOpen: true
}, {
    // configuration
    clone: true
});

和嵌套的JSON对象如下所示:

{
    "time":"2015-04-23T06:23:48.173+0000",
    "timeZone":"IST"
}

所以我想区分两者,因为我想以不同的方式使用它们 提前谢谢......

3 个答案:

答案 0 :(得分:7)

假设你解析了JSON,迭代对象的属性并检查是否有任何属性值是对象:

var isNested = Object.keys(obj).some(function(key) {
    return obj[key] && typeof obj[key] === 'object';
});

答案 1 :(得分:0)

在javascript对象中,包含在大括号 {} 中。嵌套对象是键的值是另一个对象的位置。

在您的示例中,"属性" object保存key1和key2。然后将其嵌套在"数据"对象作为其价值。

JSON与常规javascript对象大致相同,但有一些限制和语法。

答案 2 :(得分:0)

您可以使用以下函数,该函数检查在第一级之后定义的任何对象:

function check_if_nested(obj) {
    check_nest=[]
    obj.map(function(e,i) {$.each(e, function(v){
      if(typeof(obj[0][v])=='object') {check_nest.push('nested')} else {check_nest.push('not nested')}
    })})
    if(check_nest.includes('nested')) {return(true)} else {return(false)}
    }

用法:

非嵌套示例

obj_1 = [{
    one: "apples",
    two: "oranges"
}]

..用法:

check_if_nested(obj_1)

嵌套示例

obj_2 = [{
    one: "apples",
    two: "oranges",
    children: [{
        three: "bananas",
        four: "jicamas"
    }]
}]

..用法:

check_if_nested(obj_2)