Javascript 将JSON嵌套到平面HTML表

Javascript 将JSON嵌套到平面HTML表,javascript,Javascript,我有一个嵌套的JSON对象,我需要遍历所有级别并获取属性+对象名 这就是我所期待的 MainObject.Property1 MainObject.Property2 MainObject.Property3 ChildObject1.Property1 ChildObject1.PropertyN ChildsChildObject1.Property1 ChildsChildObject1.PropertyN .. so on.. 我对JavaScript非常陌生,所以请留下来,我尝试了这

我有一个嵌套的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);
            }
        }
    }
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]);
    }
  }
}
更新

我将建议应用到我的代码中,它有了一些改进

您可以使用这个JSON,但对我来说,我的代码必须与任何JSON一起工作

更新2

最新的代码仍然不起作用

    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);
            }
        }
    }
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回复,但我需要创建一个平面动态表,因此我的第一个任务是获取所有属性名称,以便创建一个列名数组并使用它创建动态表。

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

function walker(item) {
    display(item);

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

如果(typeof value==“object”){查看浏览器的JavaScript控制台,应该会有一条错误消息告诉您确切的问题

function walker(item) {
    display(item);

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

如果(typeof value==“object”){这似乎就是您想要的:

mainObject={“odata.metadata”:http://services.odata.org/V3/OData/OData.svc/$metadata#Categories“,”value“:“{”Products“:{”Supplier“:{”ID“:”1,“Name“:”东京贸易商“,”Address“{”街道“:”NE 40“,”城市“:”Redmond“,”州“:”WA“,”ZipCode“:”98052“,”国家“:”美国“,”地点“:{”类型“:”点“,”坐标“:[-122.107711791992,47.647220611573],”crs“:{“type”:“name”,“properties”:{“name”:“EPSG:4326”}}},“Concurrency”:0},“ProductDetail”:null,“ID”:0,“name”:“Bread”,“Description”:“Whole grain Bread”,“ReleaseDate”:“1992-01-01T00:00:00”,“contractedDate”:null,“Rating”:4,“Price”:2.5},{“Supplier”:“ID”:0,“name”:“外来液体”,“地址”:{“街道”:“NE 228th”,“城市”:“Sammamish”,“州”:“WA”,“ZipCode”:“98074”、“国家”:“美国”},“地点”:{“类型”:“点”、“坐标”:[-122.03547668457,47.6316604614258],“crs”:{“类型”:“名称”、“属性”:{“名称”:“EPSG:4326”}}},“并发”:0},“产品详细信息”:{“产品详细信息”:“产品1”},“ID”:1,“名称”:“牛奶”,“说明”:“低脂牛奶”,“发布日期”:“1995-10-01T00:00:00”,“DDATE”“:null,“评级”:3,“价格”:3.5}],“ID”:0,“名称”:“食品”},{“产品”:[{“供应商”:{“ID”:0,“名称”:“异国液体”,“地址”:“{“街道”:“NE 228”,“城市”:“Sammamish”,“州”:“WA”,“ZipCode”:“98074”,“国家”:“美国”},“地点”:“{“类型”:“点”,“坐标”:[-122.03547668457,47.6316604614258],“类型”:“名称”,“财产”:“名称”:“EPSG:4326”},“Concurrency”:0},“ProductDetail”:{“ProductID”:1,“Details”:“product 1的细节”},“ID”:1,“Name”:“Milk”,“Description”:“Low fat Milk”,“ReleaseDate”:“1995-10-01T00:00:00:00”,“DiscreatedDate”:null,“Rating”:3,“Price”:3.5},{“Supplier”:{“ID”:0,“Name”:“异国液体”,“地址”:{“Street”:“NE 228th”,“城市”:“Sammamish”,“州”:“WA”,“ZipCode”98074”,“国家”:“:”USA“},“地点:”{”类型“:”点“,”坐标“:[-122.03547668457,47.6316604614258],”crs“:{”类型“:”名称“:”属性“{”名称“:”EPSG:4326“}}}”,并发“:0}”,产品详细信息“:空,“ID”:2,“名称“:”葡萄酒苏打“,”描述“:”美国品种-混合6种口味“,”发布日期“:”2000-10-01T00:00:00”,“终止日期“,”空,“评级“:”3,“价格”:20.9}{“供应商”:{“ID”:0,“名称”:“异国液体”,“地址”:{“街道”:“NE 228”,“城市”:“Sammamish”,“州”:“WA”,“ZipCode”:“98074”,“国家”:“美国”},“地点”:{“类型”:“点”,“坐标”:[-122.03547668457,47.6316604614258],“crs”:{“类型”:“名称”:“名称”:“EPSG:4326”}},“并发性”:0},“产品详细信息”:{“产品详细信息”:产品详细信息3“,”ID“,”名称“:”哈维纳可乐“,”说明“:”原酸橙可乐“,”发布日期“,”2005-10-01T00:00:00”,“停产日期“,”2006-10-01T00:00:00“,”评级“,”3,“价格“:”19.9},{”供应商“,”ID“:0,”名称“,”异国液体“,”地址“,”,“{”街道“,”东北228城市“,”萨马米什“,”州“,”华盛顿“,”ZipCode“:”98074”,“国家“,”美国“,”地点“:”{“类型”:“点”,“坐标”:[-122.03547668457,47.6316604614258],“crs”:{“类型”:“名称”,“属性”:{“名称”:“EPSG:4326”}}}},,“并发性”:0},“产品详细信息”:{“产品详细信息4”},ID:4,“名称”:“水果潘趣酒”,“描述”:“芒果香精,8.3盎司罐头(24包)”,“释放日期”:“2003-01-05T00:00”,“停止生产”“:null,“评级”:3,“价格”:22.99},{“供应商”:{“ID”:0,“名称”:“异国液体”,“地址”:{“街道”:“NE 228th”,“城市”:“Sammamish”,“州”:“WA”,“ZipCode”:“98074”,“国家”:“美国”},“位置”:{“类型”:“点”,“坐标”:[-122.03547668457,47.6316604614258],“crs”:{“类型”:“名称”,“属性”:{“名称”:“EPSG:4326”},“并发性”:0},“产品详细信息”:,“ID”:5,“名称”:“蔓越莓汁”,“描述”:“16盎司塑料瓶(12包)”,“发布日期”:“2006-08-04T00:00:00”,“停产日期”:空,“评级”:3,“价格”:22.8},{“供应商”:{“ID”:0,“名称”:“异国液体”,“地址”:{“街道”:“NE 228号”,“城市”:“Sammamish”,“州”:“WA”,“ZipCode”:“98074”,“国家”:“美国”},“地点”:“类型”:“点”坐标“:[-122.03547668457,47.6316604614258],“crs”:{“类型”:“名称”,“属性”:{“名称”:“EPSG:4326”}},“并发性”:0},“产品详细信息”:null,“ID”:6,“名称”:“粉色柠檬水”,“说明”:“36盎司罐装(3包)”,“发布日期”:“2006-11-05T00:00:00”,“停产日期”:null,“评级”:3,“价格”:18.8},{“odata.type”:“Odaemo.FeaturedProduct供应商:null,“ProductDetail”:null,“ID”:9,“名称”:“柠檬水”,“描述”:“经典清新柠檬水(单瓶)”,“发布日期”:“1970-01-01T00:00:00”,“中止日期”:null,“评级”:7,“价格”:1.01},{“odata.type”:“ODataDemo.FeaturedProduct”,“供应商”:null,“ProductDetail”:null,“ID”:10,“名称”:“咖啡”,“描述”:散装速溶咖啡罐,“发布日期”:“1982-12-31T00:00:00”,“停产日期”:“空”,评级:1,“价格:6.99}],“ID”:1,“名称”:“饮料”},{“产品”:[{“供应商”:{“ID”:1,“名称”:“东京贸易商”,“地址”:{“街道”:“东北40”,“城市”:“雷德蒙”,“州”:“佤邦”,“ZipCode”:“98052”,“国家”:“美国”},“地点”:{“类型”:“点”,“坐标”[-12