MarkLogic使用javascript获取Json文档的所有嵌套字段名称

时间:2018-02-12 10:07:39

标签: javascript marklogic

我需要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, '')*

1 个答案:

答案 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和所需的输出更新您的问题(即使它是动态的,人们可以复制/粘贴并使用的示例有很多帮助)