JSONiq 是个构建在 XQuery 之上的新型查询语言。类似于 SQL 或是 LINQ,它提供了诸如 let、for、where、group by 与 select 等语法支持概念,参见如下代码示例:
let $stats := db:find("stats") for $access in $stats where $access("response_time") > 5 group by $url := $access("url") return { "url": $url, "avg": avg($access("response_time")), "hits": count($access) }
JSONiq 不仅仅支持 JSON 到 JSON 的转换。你可以通过它生成或是解析 XML,甚至还可以创建合并这两者的查询。在下面这个来自于JSONiq 文档的示例中,你可以看到JSONiq 被用作模板语言来生成HTML 表格。
类似于XQuery,JSONiq 也支持重叠与非重叠窗口。该特性可用于将数据平均划分为若干块,或是用于统计计算,如计算“last 3”的平均值。可以通过XPath 规范了解关于tumbling 与sliding windows 的更多内容。
JSONiq 的另一个特性就是更新 JSON 数据的能力。在该示例中,你可以看到一个 status 属性被插入到了匹配名字“Deadbeat Jim”的记录中。
JSONiq 是 XQuery 处理器 Zorba 的一部分,Zorba 基于 Apache 2 许可。JSONiq 本身则基于 Creative Commons Attribution-ShareAlike 3.0 Unported 许可。
查看英文原文: JSONiq: The JSON Query Language
评论