关于javascript:html基于JSON对象树的表

html table based upon json object tree

本问题已经有最佳答案,请猛点这里访问。

我有一个动态JSON对象,它可以包含不同类型的属性和对象,可以包含平面字符串甚至数组。我编写了一个JavaScript代码,将单个JSON结构转换为HTML表,效果很好,但我想将其转换为动态JSON,所以基本上我需要迭代JSON树的父级和子级,以了解如何创建这个HTML表。

但是,在尝试验证子对象是否包含对象时,我确实遇到了一些问题,比如:(我不想向JSON添加许多细节)

1
2
3
4
5
6
7
8
parent: {
    child_1: {
        attr1 : value1
    },
    child_2: {
          [{ attribues and values in an array }]
    }
}

我怎么能做到?我想用"typeof"函数,就像这样:

1
2
3
4
5
if (typeof key === 'array') {
    // do something
}else{
    // do another stuff
}

但我不相信这会奏效,你们能帮我吗?

事先谢谢。


检查typeof key === 'array'是不正确的,因为对于数组,typeof将返回"object"。您可以尝试使用instanceof代替:

1
2
3
4
5
if (key instanceof Array) {
    // do something
} else {
    // do another stuff
}

但如果您的JSON是在另一个框架中创建的,那么这将失败。另一种选择是检查toString()

1
Object.prototype.toString.call(key).indexOf('Array') > 0

或检查

1
Array.isArray(key)

但并非所有浏览器都支持它。

EDOCX1[1]的描述,您可以在这里看到:https://developer.mozilla.org/en-us/docs/javascript/reference/operators/typeof