如何为 J2H 定义递归转换?
How to define recursive transforms for J2H?
我正在评估使用 J2H (http://json2html.com/examples/) 来渲染 JSON 结构。
我的 JSON 是复杂的树,具有许多重复(递归)结构。
我的问题是如何定义一个转换,当它找到相同 type/structure 的节点时,它可以应用于 JSON 树的多个级别(我可以添加类型或 class 属性以了解哪些节点属于同一类型)。
示例:
+ root type=node
+ child type=attribute
+ child type=node
+ child type=attribute
+ child type=attribute
+ child type=node_primitive
+ child type=primitive
+ child type=attribute
+ child type=node
在那棵树上,我们有类型:节点、属性、node_primitive 和基元,它们可以位于树的不同级别。并且相同类型的节点将具有相同的结构。
您应该能够使用内联函数和嵌套转换来执行类似的操作(http://json2html.com/examples/#example-basic-nested)
例如,如果您想要基于类型 json 的特定 child 字段,您可以这样做
var transforms = {
'attribute':{'<>':'div','text':'Attribute'},
'node':{'<>':'div','text':'Node'},
'list':{'<>':'li','html':function(){
return( json2html.transform(this,transforms[this.type]) );
}},
var data = [
{'type':'node'},
{'type':'attribute'}
];
document.write( json2html.transform(data,transforms.list) );
如果您的 JSON 结构具有不止一层深度,您可以在根节点的内联函数中递归调用以下内容。
json2html.transform(this.child,transforms.list)
我正在评估使用 J2H (http://json2html.com/examples/) 来渲染 JSON 结构。
我的 JSON 是复杂的树,具有许多重复(递归)结构。
我的问题是如何定义一个转换,当它找到相同 type/structure 的节点时,它可以应用于 JSON 树的多个级别(我可以添加类型或 class 属性以了解哪些节点属于同一类型)。
示例:
+ root type=node
+ child type=attribute
+ child type=node
+ child type=attribute
+ child type=attribute
+ child type=node_primitive
+ child type=primitive
+ child type=attribute
+ child type=node
在那棵树上,我们有类型:节点、属性、node_primitive 和基元,它们可以位于树的不同级别。并且相同类型的节点将具有相同的结构。
您应该能够使用内联函数和嵌套转换来执行类似的操作(http://json2html.com/examples/#example-basic-nested)
例如,如果您想要基于类型 json 的特定 child 字段,您可以这样做
var transforms = {
'attribute':{'<>':'div','text':'Attribute'},
'node':{'<>':'div','text':'Node'},
'list':{'<>':'li','html':function(){
return( json2html.transform(this,transforms[this.type]) );
}},
var data = [
{'type':'node'},
{'type':'attribute'}
];
document.write( json2html.transform(data,transforms.list) );
如果您的 JSON 结构具有不止一层深度,您可以在根节点的内联函数中递归调用以下内容。
json2html.transform(this.child,transforms.list)