JSONPath 查询练习场
测试 RFC 9535 JSONPath 查询,查看每个匹配及其路径
粘贴 JSON、打开文件或加载示例。
符合 RFC 9535 的 JSONPath,由 jsonpath-rfc9535 1.3.0 在浏览器后台任务中计算。
什么是 JSONPath 查询练习场?
一个用于 RFC 9535 JSONPath 的练习场。JSONPath 是 IETF 制定的、在 JSON 文档中选择节点的标准。粘贴 JSON,编写类似 $.store.products[?@.price < 50].name 的查询,即可看到每个匹配的值、规范化路径和 JSON 指针。可用于为 API 测试、配置工具、OpenAPI overlay 或 Kubernetes 风格的工具编写选择器,并准确查看它们选中了哪些节点。如需转换或重组 JSON,请使用基于 jq 的 JSON 查询练习场;如需按文本查找键或值,请使用 JSON 搜索。
支持的语法
根节点 $、成员名($.name 和 $['name'])、包括负数的数组索引([0]、[-1])、通配符([*] 和 .*)、可带步长的切片([1:5]、[::-1])、同一方括号中的多个选择器([0,2] 或 ['a','b'])、后代(..name 和 ..*)以及过滤器。过滤器([?…])使用 == != < <= > >= 比较,用 && || ! 和括号组合,并用 ?@.member 检查是否存在:只要成员存在,即使值为 false 或 null,该检查也为真。可使用 RFC 的五个函数:length()、count()、match()、search() 和 value()。“语法示例”中的每一项都会为“商店目录”示例加载一个查询。
match() 和 search() 中的正则表达式
match() 和 search() 接受 I-Regexp(RFC 9485)模式,这是一个小巧且可互操作的正则表达式子集。match() 必须匹配整个字符串,search() 在字符串任意位置查找模式。默认启用 Unicode,点号匹配除换行符以外的任意字符。反向引用、前后断言、惰性量词和标志都不属于 I-Regexp;请避免使用,因为其他 JSONPath 实现会拒绝或忽略它们。
规范化路径与 JSON 指针
每个匹配都会列出规范化路径,即 RFC 9535 的标准形式,例如 $['store']['products'][0]['name'],成员名中的撇号、反斜杠和控制字符会被转义。同时列出对应的 RFC 6901 JSON 指针,例如 /store/products/0/name,其中 ~ 变为 ~0,/ 变为 ~1;整个文档是空指针。路径可用于测试,指针可用于 JSON Patch 操作或 $ref 值。
限制与隐私
查询在浏览器的后台任务中运行;不会上传或存储任何内容,只会记住所选的结果显示方式。256 KB 以内的输入会在输入时重新运行;更大的输入(最多 10 MB)在按“运行”后执行,每次运行在 15 秒后停止。列表显示前 2,000 个匹配,而计数和“复制全部”操作包含所有匹配。此工具只选择节点,不转换数据。脚本表达式或 ~ 键运算符等旧的非标准扩展会被视为语法错误,@.length 读取的是名为 length 的成员(获取大小请用 length(@))。超出 JavaScript 精度的数字会显示为最接近的可表示值。
