json - 从 XQuery 重建和转换 JSON 对象

标签 json marklogic marklogic-8

是否可以在 XQuery 中重建 JSON 对象?使用 XML,可以使用计算构造函数来重建元素:

element { node-name($some-element) } {
  (: Do stuff with $some-element/(@*|node()) :)
}

但是使用 JSON 对象,似乎无法重建属性。我想做这样的事情,但这会引发语法错误:

object-node {
  for $p in $some-json-object/*
  return node-name($p) : $p
}

看起来可以通过改变 JSON 对象来解决这个问题:

let $obj := json:object(document{xdmp:from-json($json)}/*)
let $_put :=  map:put($o, 'prop-name', $prop-val)
return xdmp:to-json($o)/node()

但这有一些明显的局限性。

最佳答案

恐怕使用 json:object 真的是这里的使用方式。但可能更糟,您只需要几行即可复制所有 json 属性。您也不需要那个 document{} 构造函数,也不需要转换为 json:object 的额外类型。 xdmp:from-json 已经返回一个 json:object:

let $org := xdmp:from-json($json)
let $new := json:object()
let $_ :=
  for $key in map:keys($org)
  return map:put($new, $key, map:get($org, $key))
return xdmp:to-json($new)/node()

喂!

关于json - 从 XQuery 重建和转换 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36000887/

相关文章:

javascript - PHP json_encode 输出带引号的数字

php - 将 json 从 jquery 发送到 php 并插入数据库

xquery - 查询 MarkLogic 数据的最佳 UI 界面/语言

marklogic - 我们可以在 MarkLogic 的 Optic API 查询中使用 DATEADD 函数吗

marklogic - Marklogic 9.0-5 更新 roxy 的问题

marklogic - 如何在 Apache Tomcat 中部署 Marklogic XCC 库?

java - 使用 Jackson 从 JSON 文件中删除一个空元素

java - 冲突的模块。 LoggerFactory 不是 Logback LoggerContext 但 Logback 在类路径上

java - 使用 java api 对文档元数据执行范围搜索

json - 如何使用 jq 将 JSON 文档复制到另一个文档中