【发布时间】:2016-06-21 17:34:13
【问题描述】:
我有如下 JSON 数据
[
{
"name": "car",
"value": "",
"children": [
{
"name": "v8_engine",
"value": "",
"children": [
{
"name": "cylinder-arrangement",
"value": "",
"children": [
{
"name": "type",
"value": "string",
"children": []
},
{
"name": "max-elements",
"value": "8",
"children": []
}
]
}
]
},
{
"name": "other-parts",
"value": "",
"children": [
{
"name": "per-cylinder-parts",
"value": "",
"children": [
{
"name": "piston-diameter",
"value": "",
"children": [
{
"name": "type",
"value": "uint32",
"children": []
},
{
"name": "range",
"value": "2000... 9000",
"children": []
}
]
},
{
"name": "valves",
"value": "",
"children": [
{
"name": "number",
"value": "",
"children": []
},
{
"name": "position",
"value": "",
"children": []
}
]
}
]
}
]
}
]
}
]
我想解析每个元素及其各自的子元素,并将它们列为父子元素和它们的孙子元素,就像 GOJS 中的一棵简单的树。
我正在使用以下逻辑,但这只是解析和推送 go-js 模型中的节点数据和链接数据数组元素。
var i=0;
function loop(a) {
if(a.yang_type!='' && a.name!=''){
nodeDataArray.push({ key:i,Data: a.yang_type + " " + a.name, group: -1 });
console.log("Data:",a.yang_type);
linkDataArray.push({ from: i, to: i+1 });
}
if(a.name!='' && a.value!=''){
nodeDataArray.push({ key:i,Data: a.name + " " + a.value, group: -1 });
linkDataArray.push({ from: 0, to: i+1 });
}
//console.log(a.name);
i=i+1;
// process you data
Array.isArray(a.children) && a.children.forEach(loop); // check and iterate children
myDiagram.model = go.GraphLinksModel(nodeDataArray, linkDataArray);
}
【问题讨论】:
-
到底是什么问题?
-
它在 GOJS 中将 JSON 表示为一棵树。我需要 Javascript 中的逻辑来解析元素,然后将它们推送到 nodeDataArray 和 linkData Array
标签: javascript json gojs ietf-netmod-yang