jsonPath

jsonpath实现了对PostgreSQL中 SQL/JSON 路径语言的支持,以查询 JSON 数据。 它提供解析后的 SQL/JSON 路径表达式的二进制表示,指定路径引擎要从 JSON 数据中检索的项目,以便使用 SQL/JSON 查询功能进一步处理。 SQL/JSON 路径谓词和运算符的语义一般遵循 SQL。 SQL/JSON 路径语法使用了JavaScript的一些约定:
  • 点(.)用于成员访问。
  • 方括号([])用于访问数组。
  • SQL/JSON 数组是从 0 开始的(而普通 SQL 数组是从 1 开始的)。
通常,在 SQL 查询中,SQL/JSON 路径表达式被写成 SQL 字符串字面形式。 这意味着路径表达式必须用单引号括起来。 此外,数值中的任何单引号都必须加倍。 某些形式的路径表达式需要在其中使用字符串字面量。 嵌入的字符串字面量符合JavaScript/ECMAScript的约定:
  • 它们必须用双引号括起来。
  • 其中可以使用反斜线转义来表示其他难以键入的字符。
要在嵌入式字符串字面量中使用双引号,必须键入 "\"。 要获得反斜线,必须输入 "\\
其他特殊反斜杠序列包括 JSON 字符串中可识别的反斜杠序列:
对于各种 ASCII 控制字符
  • \b
  • \f
  • \n
  • \r
  • \t
  • \v
对于由 4 位六位数码位标识的统一码字符来说
  • \uNNNN
反斜杠语法还包括 JSON 不允许的两种情况:
对于只用两个十六进制数字写成的字符代码
  • \xNN
对于用 1 到 6 个十六进制数字写成的字符代码
  • \u{N...}
路径表达式由一系列路径元素组成,这些元素可以是
  • JSON 原始类型的路径文字:Unicode 文本、数字、true、false 或 null。
  • 路径变量。
  • 访问操作符。
  • jsonpath操作符和方法,您可以使用它们提供过滤表达式或定义路径评估的顺序。

jsonpath 变量

$
表示要查询的 JSON 文本(上下文项目)的变量。
$变量名
一个已命名变量。 您可以通过几个 JSON 处理函数的参数 "vars来设置该值。
@
表示过滤表达式中路径评估结果的变量。

jsonpath 访问器

.键
."$varname"
成员访问器,返回具有指定键的对象成员。 如果键名是一个以 $ 开头的命名变量,或者不符合JavaScript的标识符规则,则必须用双引号将其括入字符串字面。
.*
通配符成员访问器,用于返回当前对象顶层所有成员的值。
.**
递归通配符成员访问器,用于处理当前对象 JSON 层次结构的所有层级,并返回所有成员值(无论其嵌套层级如何)。 这是PostgreSQL对 SQL/JSON 标准的扩展。
.**{level}
.**{start_level to end_level}
与 .** 相同、 但对 JSON 层次结构的嵌套层进行过滤。 嵌套级别以整数指定。 零级对应当前对象。 要访问最低嵌套层,可以使用最后一个关键字。 这是PostgreSQL对 SQL/JSON 标准的扩展。
[下标,......]
数组元素访问器。 subscript有两种形式:"index或 "start_index至 "end_index。 第一种形式按索引返回单个数组元素。 第二种形式按索引范围返回一个数组切片,包括与所提供的 "start_index和 "end_index相对应的元素。
指定的 "index可以是整数,也可以是返回单一数值的表达式,该表达式会自动转换为整数。 零索引对应第一个数组元素。 您还可以使用 last 关键字来表示最后一个数组元素,这对于处理未知长度的数组非常有用。
[*]
通配符数组元素访问器,返回所有数组元素。

SQL/JSON 路径语言

与用于 "SQL访问 XML 的 "XPath表达式类似,"SQL/JSON路径表达式指定从 "JSON数据中检索哪些项目。

在 "PostgreSQL,中,路径表达式作为 "jsonpath数据类型实现。 它们可以使用jsonpath 中描述的任何元素。

JSON查询函数和操作符将提供的路径表达式传递给路径引擎进行评估。 如果表达式与查询的 JSON 数据匹配,则返回相应的 SQL/JSON 项目。

路径表达式是用 SQL/JSON 路径语言编写的。 它们可以包括算术表达式和函数。 所提供的表达式必须用单引号括起来,因为查询函数将此类表达式视为文本字符串。

路径表达式由 "jsonpath允许的一系列元素组成。 路径表达式从左到右进行评估。 您可以使用括号来更改操作顺序。 如果评估成功,就会生成一个SQL/JSON 序列。 评估结果将返回给完成指定计算的 JSON 查询函数。

要引用上下文项(要查询的 JSON 数据),可以在路径表达式中使用 "$符号。 您可以在符号后面加上一个或多个jsonpath 访问器。 它们逐级向下查看 JSON 结构,以检索上下文项的内容。 接下来的每个运算符都会处理上一个评估步骤的结果。

有关 "jsonpath操作符和方法的更多信息,请参阅jsonpath