是否可以在 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/