MarkLogic 使用 javascript 获取 Json 文档的所有嵌套字段名称
MarkLogic Get all Nested Field name of Json document using javascript
我需要 javascript 中的递归函数,它可以 return 我在 MarkLogic 中 json 文档存储的所有字段名(键名)。 JSON 文档非常动态并且具有多个层次元素。所以需要一个可以遍历JSON并获取所有字段名(Keys Name)的函数。
我认为的一个选择是将整个文档放入 MaP 对象,然后 运行 Map 函数获取所有键。但不确定 MarkLogic 是否允许将整个 json 文档捕获到 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"
}
}
Whosebug 提供的解决方案
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, '')*
这个方便的页面可能会有所帮助: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 和所需的输出更新您的问题(即使它是动态的,人们可以 copy/paste 并在很多帮助下工作)
我需要 javascript 中的递归函数,它可以 return 我在 MarkLogic 中 json 文档存储的所有字段名(键名)。 JSON 文档非常动态并且具有多个层次元素。所以需要一个可以遍历JSON并获取所有字段名(Keys Name)的函数。
我认为的一个选择是将整个文档放入 MaP 对象,然后 运行 Map 函数获取所有键。但不确定 MarkLogic 是否允许将整个 json 文档捕获到 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"
}
}
Whosebug 提供的解决方案
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, '')*
这个方便的页面可能会有所帮助: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 和所需的输出更新您的问题(即使它是动态的,人们可以 copy/paste 并在很多帮助下工作)