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 并在很多帮助下工作)