【问题标题】:How do I programmatically create JSON in XQuery in MarkLogic?如何在 MarkLogic 的 XQuery 中以编程方式创建 JSON?
【发布时间】:2016-05-17 21:25:17
【问题描述】:

我需要在 MarkLogic 中的 XQuery 中建立一个 JSON 节点。我知道我可以使用xdmp:unquote() 将字符串解析为node()。但是,我想以编程方式构建 JSON,而不是丑陋的字符串连接。我可以使用computed element constructors 在XQuery 中构建XML 节点。 JSON节点有类似的东西吗?

【问题讨论】:

  • MarkLogic 问题比一般的 XQuery 问题要多得多。例如,在 BaseX 中执行此操作的方式会有所不同。
  • 是的。谢谢。我已更新标题和说明以反映这一点。

标签: json xquery marklogic


【解决方案1】:

JSON 在 MarkLogic 中实现为 XML 数据模型的扩展。 MarkLogic 8 引入了object-nodearray-nodenumber-nodeboolean-nodenull-node 测试和构造函数。因此,在 XQuery 中,您可以使用计算构造函数构建 JSON,就像使用 XML 一样。例如,

object-node { 
  "key" || fn:string(xdmp:random(100)): array-node { 1, 2, 3 }, 
  "another": object-node { "child":  text {'asdf'} },
  "lastButNotLeast": boolean-node { fn:true() }
}

将创建 JSON,

{
  "key47": [1, 2, 3],
  "another": {
    "child": "asdf"
  },
  "lastButNotLeast": true
}

旁白:在 JavaScript 中,您可以使用 JavaScript 语法将类似 JSON 的结构构建为 JavaScript 对象。您可以使用 xdmp.toJSON() 将 JavaScript 对象转换为 JSON 节点。但是,大多数需要 JSON 节点的内置函数会自动执行此转换,例如 xdmp.documentInsert()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2017-12-28
    • 2020-02-18
    • 2017-09-28
    • 2018-10-14
    • 2011-12-12
    • 2018-11-13
    相关资源
    最近更新 更多