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

时间:2016-05-17 21:25:18

标签: json xquery marklogic

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

1 个答案:

答案 0 :(得分:8)

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
}

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