当前位置: 首页 > 面试题库 >

JSON是否有查询语言?

颜安宁
2023-03-14
问题内容

是否存在(大致)SQL或类似XQuery的语言来查询JSON?

我想到的是非常小的数据集,可以很好地映射到JSON,可以轻松地回答诸如“ Y> 3时X的所有值是什么”之类的查询或执行常规的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])

我认为这将在客户端和服务器端均有效,并将结果转换为适当的特定于语言的数据结构(或可能保留为JSON)

快速Google 搜寻表明人们已经考虑了这一点并实现了一些东西(JAQL),但似乎还没有出现标准用法或库集。尽管每个功能单独实现起来都很简单,但是如果有人已经正确地实现了,我不想重新发明轮子。

有什么建议?

编辑:这的确是个坏主意,或者JSON可能对于我正在考虑的格式而言过于通用。想要查询语言而不是直接根据需要直接执行sum /
etc函数的原因是我希望构建根据用户输入动态查询。Kinda喜欢这样的论点:“我们不需要SQL,我们只需编写所需的函数即可”。最终,这要么变得一发不可收拾,要么随着您对SQL的进一步推崇而最终编写出自己的SQL版本。(好吧,我知道这有点愚蠢,但是你明白了。)


问题答案:

当然,如何:

  • JsonPath。
  • 杰森查询

它们似乎都在进行中,但是在某种程度上仍在工作。它们在概念上也类似于XPath和XQuery。即使XML和JSON具有不同的概念模型(层次结构与对象/结构)。

编辑
2015年9月:实际上,现在有了JSON指针标准,该标准允许非常简单有效地遍历JSON内容。它不仅是正式指定的,而且受许多JSON库支持。因此,我将其称为实际真正有用的标准,尽管由于其有限的表达性,它可能本身也可能不被视为查询语言。



 类似资料:
  • 问题内容: 我想知道是否可以在@Query批注中包含子查询(org.springframework.data.jpa.repository.Query;) 我在第一个子查询括号上得到QuerySyntaxException。 这是我的查询 谢谢! 问题答案: 不可以,JPQL查询的select子句中不能包含子查询。 JPQL在WHERE和HAVING子句中支持子查询。它可以(至少)是ANY,SOM

  • 是否有方法验证原始spark SQL查询的语法? 例如,我想知道spark是否提供了任何API调用?

  • 我正在从事一个项目,该项目有一个带有查询的JPA存储库。其中一个查询在同一个查询中有以及,但它不能正常工作。 当我通过时,它返回大约,当我通过例如“MAR”时,它返回,这是没有意义的,因为没有过滤器的查询正在获取所有行。我观察到的是,在处,正在分割查询。他正在列表中寻找,使用

  • 问题内容: 我需要在oracle表中更新新创建的列。为此,我需要使用行中的现有值来决定如何填充此列,但出现错误: 这是我的查询: 关于语法有什么建议吗? 问题答案: 您可以在子句中使用 CASE 表达式。 例如,

  • Hyperledger Composer中的查询以定制的查询语言编写。查询在业务网络定义中的一个叫(queries.qry)的查询文件中定义。 查询语法 所有查询都必须包含description和statement属性。 描述 该description属性是描述查询功能的字符串。它必须包含但可以包含任何东西。 声明 该statement属性包含查询的定义规则,可以具有以下运算符: SELECT 是

  • 检查提供的参数是否是有效的JSON。 使用 JSON.parse() 和 try... catch 块来检查提供的参数是否是有效的JSON。 const isValidJSON = obj => { try { JSON.parse(obj); return true; } catch (e) { return false; } }; isValidJSON(