xquery - 如何从 jsoniq 或 javascript 中的 json 文档获取所有字符串?

标签 xquery jsoniq

我试图将 json 字符串的所有值作为单个字符串获取。例如 在 xquery xml 中

let $x := <a> welcome to the world of <b> JSONiq </b></a>
return string($x)

将返回欢迎来到 JSONiq 的世界

JSONiq 中以下文档的等效结果是什么:

let $y := {"a":"welcome to the world of ","b":" JSONiq"}
return xxxx($y)

结果应该是相同的欢迎来到 JSONiq 的世界 如果你也了解 javascript 那就太好了。

最佳答案

首先,您需要使用 libjn:values 或其定义获取所有值,然后您可以使用 fn:string-join 获取单个字符串:

所以

declare namespace libjn = "http://jsoniq.org/function-library";
let $y := {"a":"welcome to the world of ","b":" JSONiq"}
return string-join(libjn:values($y) ! string(), "")

let $y := {"a":"welcome to the world of ","b":" JSONiq"}
return string-join($y() ! string($y(.)), "")

这也可能返回“JSONiqwelcome to the world of”,因为对象键是无序的

关于xquery - 如何从 jsoniq 或 javascript 中的 json 文档获取所有字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079385/

相关文章:

xquery - 如何高效替换XML的多个节点?

javascript - 是否有与 XQuery/XPath 等效的 JSON?

json - JSONiq 和 XQuery 3.1 之间有什么区别?

JSONiq:Java 实现作为库?

dom - 返回具有 id 属性集的所有节点的 xpath 查询

function - 使用 XQuery 扁平化 XML

xml - XQuery:如何使用内部 for 循环的结果来对外部 for 循环的结果进行排序?