我需要在MarkLogic的XQuery中构建一个JSON节点。我知道我可以使用xdmp:unquote()
从字符串解析为node()
。但是,我想以编程方式构建JSON,而不需要丑陋的字符串连接。我可以使用computed element constructors在XQuery中构建XML节点。 JSON节点有类似的东西吗?
答案 0 :(得分: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() }
}
将创建JSON,
{
"key47": [1, 2, 3],
"another": {
"child": "asdf"
},
"lastButNotLeast": true
}
Aside:在JavaScript中,您可以使用JavaScript语法将类似JSON的结构构建为JavaScript对象。您可以使用xdmp.toJSON()
将JavaScript对象转换为JSON节点。但是,大多数需要JSON节点的内置函数会自动执行此转换,例如xdmp.documentInsert()
。