如何获取对象所有子节点的 JSONPath?
E.g.:
var data = [{
"key1": {
"children": [{
"key2": "value",
"key3": "value",
"key4": {}
}, {
"key2": "value",
"key3": "value",
"key4": {}
}],
"key5": "value"
}
}, {
"key1": {
"children": {
"key2": "value",
"key3": "value",
"key4": {}
},
"key5": "value"
}
}]
我想以数组形式获取数据结构中所有节点的绝对路径:
[
"data[0]['key1']['children'][0]['key2']",
"data[0]['key1']['children'][0]['key3']",
"data[0]['key1']['children'][0]['key4']",
......,
"data[0]['key1']['children'][1]['key2']",
.......,
"data[1]['key1']['children']['key2']",
..........
]
有什么办法可以用JS完成这个工作吗?
我编写了一个自定义代码,为我们提供所有节点的 JSON 路径作为数组
function toArray(obj, name) {
var result = [];
var passName;
var tempArray = [];
for (var prop in obj) {
var value = obj[prop];
if (typeof value === 'object') {
if ($.isNumeric(prop)) {
passName = name + "[" + prop + "]";
} else {
passName = name + "['" + prop + "']";
}
tempArray = toArray(value, passName);
$.each(tempArray, function (key, value) {
result.push(value);
});
} else {
result.push(name + "['" + prop + "']");
}
}
return result;
}
JSFiddle http://jsfiddle.net/c5K3r/23/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)