是否有(大致)SQL或类XQuery语言来查询JSON?
我正在考虑非常小的数据集,这些数据集可以很好地映射到JSON,很容易回答诸如"X的所有值,其中Y> 3"的查询,或者执行通常的SUM/COUNT类型操作.
作为完全构成的例子,这样的事情:
[{"x": 2, "y": 0}}, {"x": 3, "y": 1}, {"x": 4, "y": 1}]
SUM(X) WHERE Y > 0 (would equate to 7)
LIST(X) WHERE Y > 0 (would equate to [3,4])
Run Code Online (Sandbox Code Playgroud)
我认为这可以在客户端和服务器端工作,结果转换为适当的特定于语言的数据结构(或者可能保存为JSON)
一个快速的谷歌搜索表明人们已经考虑过它并实现了一些东西(JAQL),但似乎还没有出现标准用法或一组库.虽然每个功能都可以自行实现,但如果有人已经做好了,我不想重新发明轮子.
有什么建议?
编辑:这可能确实是一个坏主意,或者JSON可能过于通用我正在思考的格式..想要查询语言而不是直接根据需要直接执行求和/等功能的原因是我希望构建查询动态地基于用户输入.有点像"我们不需要SQL,我们只能编写我们需要的功能"的论点.最终要么失控,要么在你进一步推动时最终编写自己的SQL版本.(好吧,我知道这是一个有点愚蠢的论点,但你明白了......)
这是我从其他地方获得的结构,即深度嵌套字典的列表:
{
"foo_code": 404,
"foo_rbody": {
"query": {
"info": {
"acme_no": "444444",
"road_runner": "123"
},
"error": "no_lunch",
"message": "runner problem."
}
},
"acme_no": "444444",
"road_runner": "123",
"xyzzy_code": 200,
"xyzzy_rbody": {
"api": {
"items": [
{
"desc": "OK",
"id": 198,
"acme_no": "789",
"road_runner": "123",
"params": {
"bicycle": "2wheel",
"willie": "hungry",
"height": "1",
"coyote_id": "1511111"
},
"activity": "TRAP",
"state": "active",
"status": 200,
"type": "chase"
}
]
}
}
}
{
"foo_code": 200,
"foo_rbody": {
"query": {
"result": {
"acme_no": "260060730303258",
"road_runner": "123", …Run Code Online (Sandbox Code Playgroud)