我有一个嵌套的JSON对象,我需要遍历所有级别并获取属性+对象名称,

这就是我所期望的

MainObject.Property1
MainObject.Property2
MainObject.Property3
ChildObject1.Property1
ChildObject1.PropertyN
ChildsChildObject1.Property1
ChildsChildObject1.PropertyN
.. so on..


我对JavaScript还是很陌生,所以请和我在一起,我尝试了一下但没有用,

    walker(mainObject);

    function walker(object) {
        displayAllProperties(object);
        digThroughAllObjects(object);
    }

    function displayAllProperties(object) {
        for (var property in object) {
            var type = typeof object[property];
            if (type === 'string' || type === 'number' || type === 'boolean' || object[property] instanceof Date || !object[property]) {
                console.log(object + " " + property);
            }
        }
    }

    function digThroughAllObjects(object) {
        for (var property in object) {
            if (typeof property === "object") {
                walker(property);
            }
        }
    }


更新资料

我在代码中应用了建议,并有所改进。

您可以使用此JSON,但对我而言,我的代码必须可以与任何JSON一起使用。

JSON example

更新2

最新代码仍然无法正常工作,

function displayAllProperties(object) {
  for (var property in object) {
    var type = typeof object[property];
    if (type === 'string' || type === 'number' || type === 'boolean' || object[property] instanceof Date || !object[property]) {
      console.log(object + " " + property);
    } else if (type === "object") {
      displayAllProperties(object[property]);
    }
  }
}


更新3

我在分层树中收到JSON答复,但是我需要创建一个平面动态表,所以我的第一个任务是获取所有属性名称,以便可以创建列Names数组并将其用于创建动态表。

最佳答案

查看浏览器的JavaScript控制台,应该有一条错误消息告诉您确切的问题

function walker(item) {
    display(item);

    if (typeof value === "object") {  <-- value is not defined
        $.each(value, walker);
    }
}

09-10 05:14
查看更多