我需要javascript中的递归函数,它可以返回我在MarkLogic中的json文档存储的所有fieldname(Key Name)。 JSON文档非常动态,并且具有多个层次结构元素。因此需要一个可以遍历JSON并获取所有fieldname(Keys Name)的函数。
我认为一个选项是将整个文档放入MaP对象并运行Map函数来获取所有键。但不确定MarkLogic是否允许将整个json doucment捕获到Map中,并且可以读取字段名称。
先谢谢
获得函数迭代JSON文档以提取键名
示例JSON
var object = {
aProperty: {
aSetting1: 1,
aSetting2: 2,
aSetting3: 3,
aSetting4: 4,
aSetting5: 5
},
bProperty: {
bSetting1: {
bPropertySubSetting : true
},
bSetting2: "bString"
},
cProperty: {
cSetting: "cString"
}
}
StackOverflow提供的解决方案
Recursively looping through an object to build a property list
*
function iterate(obj, stack) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object") {
iterate(obj[property], stack + '.' + property);
} else {
console.log(property + " " + obj[property]);
$('#output').append($("<div/>").text(stack + '.' + property))
}
}
}
}
iterate(object, '')*
答案 0 :(得分:2)
这个方便的页面可能会有所帮助:MarkLogic - Native JSON
以下将提取所有属性名称
var json = fn.head(xdmp.unquote('{ foo : "bar", baz : { buz: "boo", chicken : { option1 : "soup", option2 : "salad" } } }'))
json.xpath("//*/name()");
输出:foo baz buz chicken option1 option2
如果在查看该页面上的示例后仍然需要帮助,我建议您使用示例JSON和所需的输出更新您的问题(即使它是动态的,人们可以复制/粘贴并使用的示例有很多帮助)