JSONiq:JSON 查询语言

  • Jonathan Allen
  • 张龙

2013 年 1 月 7 日

话题:语言 & 开发

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

语言 & 开发