如何在JavaScript中浏览复杂的JSON?

时间:2013-06-25 08:53:07

标签: javascript json

我有一个复杂的JSON对象,我想浏览这个JSON并为它们添加更多属性。

这是我的JSON对象示例。

Object {root: Object}
      root: Object
          entity_children: Array[1]
              0: Object
                  entity_children: Array[1]
                     0: Object
                         entity_children: Array[10]
                            0: Object
                            1: Object
                            2: Object
                            3: Object
                         entity_id: "00145E5BB2641EE284F811A7907757A3"
                         entity_name: "Functional Areas"
                         entity_type: ""
    .....

基本上,我有一个JSON对象,它具有属性“entity_id”,“entity_name”,“entity_type”和“entity_children”。

“entity_children”可能包含其中的对象列表。我怎样才能通过这个元素来探索每个元素。我已经尝试过hasOwnProperty('entity_children'),但它只通过了1级。

这是我的Raw JSON

{"root":   
    {"entity_id":"00145E5BB8C21EE286A007464A64508C",
     "entity_name":"TP_GTPAPI_TEST_BASE_ACC",
     "entity_type":"",
     "entity_children":
          [{"entity_id":"00145E5BB8C21EE286A007464A66508C",
            "entity_name":"TEST_CATALOG_GTPAPI",
            "entity_type":"",
            "entity_children":
                [{"entity_id":"00145E5BB8C21EE286A007464A66708C",
                  "entity_name":"Functional Areas",
                  "entity_type":"",
                  "entity_children":
                         [{"entity_id":"00145E5BB8C21EE286A007464A66908C",
                ......

请帮忙。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你的对象中有子属性,它是同一类型对象的数组。这使它成为一个分层对象。您将需要迭代和递归才能正确地遍历所有对象。 看一下具有迭代和递归的以下代码。     var data = {         根: {             a:“1”,             b:“1”,             c:“1”,             d:[{                 a:“1.1”,                 b:“1.1”,                 c:“1.1”,                 d:[{                     a:“1.1.1”,                     b:“1.1.1”,                     c:“1.1.1”,                     d:[

                {
                    a: "1.1.1.1",
                    b: "1.1.1.1",
                    c: "1.1.1.1",
                    d: "1.1.1.1"
                }]


            }]
        }, {
            a: "1.2",
            b: "1.2",
            c: "1.2",
            d: "1.2"
        },

        ]
    }
};

function loop(obj) {
    for (var i in obj) {
        if (obj[i].d != null) {
            loop(obj[i].d);
            alert(obj[i].a);
        }
    }
}

function travel() {
    loop(data.root.d);
}

请参阅JsFiddle