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