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