如何在MarkLogic中以编程方式在XQuery中创建JSON?

Jus*_*eig 6 json xquery marklogic

我需要在MarkLogic中的XQuery中构建一个JSON节点.我知道我可以使用xdmp:unquote()从字符串解析为node().但是,我想以编程方式构建JSON,而不需要丑陋的字符串连接.我可以使用计算元素构造函数在XQuery中构建XML节点.JSON节点有类似的东西吗?

Jus*_*eig 8

JSON在MarkLogic中实现为XML数据模型的扩展.MarkLogic 8人介绍object-node,array-node,number-node,boolean-node,以及null-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() }
}
Run Code Online (Sandbox Code Playgroud)

将创建JSON,

{
  "key47": [1, 2, 3],
  "another": {
    "child": "asdf"
  },
  "lastButNotLeast": true
}
Run Code Online (Sandbox Code Playgroud)

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