【问题标题】:MarkLogic Get all Nested Field name of Json document using javascriptMarkLogic 使用 javascript 获取 Json 文档的所有嵌套字段名称
【发布时间】:2018-02-12 10:07:39
【问题描述】:

我需要一个 javascript 中的递归函数,它可以返回我在 MarkLogic 中的 json 文档存储的所有字段名(键名)。 JSON 文档是非常动态的并且有多个层次元素。所以需要一个可以遍历JSON并获取所有字段名(Keys Name)的函数。

我认为的一个选项是将整个文档放入 MaP 对象并运行 Map 函数以获取所有键。但不确定 MarkLogic 是否允许将整个 json 文档捕获到 Map 中并且可以读取字段名称。

提前致谢

获得了遍历 JSON 文档以提取 Key Name 的函数

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

【问题讨论】:

  • 您尝试使用哪些方法来完成这项工作,您是否遇到任何错误。先尝试实现,如果哪里卡住了,再来这里问
  • 如果你能详细说明你为什么需要它,它也会有所帮助。有多种方法,但知道您要达到的目标可能会有所帮助..

标签: javascript marklogic


【解决方案1】:

这个方便的页面可能会有所帮助: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 和所需输出更新您的问题(即使它是动态的,一个示例人们可以复制/粘贴并使用帮助很多)

【讨论】:

    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2016-05-15
    • 1970-01-01
    相关资源
    最近更新 更多