基于json对象树的html表

问题描述:

我有一个动态的json对象,可以包含不同类型的属性和对象,可以有平面字符串或甚至数组。 我做了一个JavaScript代码来转换单个JSON结构到一个HTML表,工作很好,但ID喜欢使它成为一个动态的JSON,所以基本上我需要遍历JSON树的父母和孩子,看看我如何创建这个HTML表格。基于json对象树的html表

但我确实有一些问题,试图验证,如果一个孩子有一个对象的内部,像这样的时候:(我不希望添加到许多细节的JSON)

parent: { 
    child_1: { 
     attr1 : value1 
    }, 
    child_2: { 
      [{ attribues and values in an array }] 
    } 
} 

我怎么能做到这一点?我正在考虑使用“typeof”功能,如下所示:

if (typeof key === 'array') { 
    // do something 
}else{ 
    // do another stuff 
} 

但我不相信它会工作得很好,你们能帮助我吗?

在此先感谢。

+0

,我认为它应该工作正常。使用递归函数来建立表格。 – Barmar 2013-05-06 19:40:27

+0

@Barmar你能帮我举个例子吗?我也在想这个,因为我发现每一个'数组',我会创建一个“可链接”行来添加另一个弹出所有的数据:( – msqar 2013-05-06 19:41:09

+0

尝试自己写,然后有人会帮你修复它。没有一个方便的例子 – Barmar 2013-05-06 19:43:21

检查typeof key === 'array'不正确,因为对于阵列typeof将返回"object"。你可以尝试使用instanceof代替:

if (key instanceof Array) { 
    // do something 
} else { 
    // do another stuff 
} 

但是,如果你的JSON在另一帧创建这将失败。 另一种方法是检查toString()

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

或检查

Array.isArray(key) 

,但它不被所有浏览器支持。

typeof说明你可以在这里看到https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof

+0

请参阅[这里](http://*.com/questions/4775722/javascript-check-if-object-is-array)为什么'instanceof'不总是工作 – 2013-05-06 19:53:25

+0

使用indexOf(“Array”)的选择不正确,如果对象是类型数组,例如Int32Array – Xotic750 2013-05-06 20:05:37

+0

@ Xotic750 OP提到原始对象是JSON,根据JSON规范http://www.json.org/可能只包含普通数组(不包含类型) – Vadim 2013-05-06 20:09:30