jq 在线试验场
jq Playground
在浏览器里对粘贴的 JSON 跑 jq 1.7 过滤器,附一份速查表,并给出等效的命令行。
在浏览器里对一份文档运行 jq 过滤器——一个真正实现 jq 1.7 语法的解释器,而不是几个字符串操作,所以管道、`reduce`、`def`、解构和更新运算符的行为都和命令行上一样。等价的 shell 命令打印在过滤器下方。
过滤器
jq '.orders[] | select(.status == "shipped") | {id, customer}' data.json
输入 JSON
拖入 .json 文件
只在这个标签页里读取,不上传。
1条输出
输出
1
耗时
3 ms
类型
object
这是在这里手写的一个 jq 1.7 语法解释器。它支持路径(.a[0].b, .., ?)、|·,·//、算术、比较、and/or/not、字符串插值、if、try、reduce、foreach、as(含解构)、def,以及 |=·+= 这样的更新、@base64·@csv 这样的格式,还有下面列出的 180个内置函数。测试用的就是 jq 手册里的例子。
不支持的:input·inputs(文档只有一份)、$ENV·env(是空的)、label·break、--stream、@sh 里的嵌套数组、strptime 中 ISO 8601 以外的格式、getpath 的流模式,以及模块(import)。正则跑在浏览器自己的引擎上,而不是 jq 的 Oniguruma,所以 \p{L} 和命名分组是可以用的,而在后行断言那一带可能有些细微差别。
如果你只是想取一条路径,用 JSONPath 测试器可能更简单。
怎么用
粘贴文档
一个 JSON 值,或连续的几个——工具把它们当作 jq 的输入流读取,数量显示在面板标题里。
写过滤器,或从示例行里取一个
按钮覆盖了常见的形状:select、map、group_by、字符串插值、reduce,以及更新运算符。悬停在一个上面会说明它做什么。
设置你在命令行上会用的标志
`-c` 让每个输出占一行,`-S` 给键排序,`-r` 输出不带引号的字符串,`-s` 把多个输入吸成一个数组。底部的命令行随之更新。
复制命令,不只是输出
生成的 `jq …` 行按 POSIX shell 正确引用,可以直接放进脚本或管道。
常见问题
这真的是 jq 吗?
它是一个独立实现的 jq 语法解释器,用 jq 自己手册里的示例测试过。这覆盖了语言和常用内置函数;它不是 jq 本身的编译产物,所以任何依赖 jq C 内部实现的东西都会有差异。
为什么 `input` 不起作用?
因为这里只有一份文档,不是过滤器能继续拉取的流。`input`、`inputs`、`$ENV`、`env`、`label`/`break`、`--stream` 和模块都在页面上列为不支持,而不是莫名其妙地失败。
我的正则表达式行为和 jq 的不一样。
jq 用 Oniguruma;这里用浏览器的引擎。实际上 `\p{L}` 和命名组在两边都能用,差异出现在后行断言和少数字符类转义上。如果一个模式很要紧,在将要运行它的机器上测试。
它在 5,000 个输出处停下了。
这是有意的限制,还有一个步数限制。对大文档做 `..` 会产生海量输出,一个失控递归的过滤器否则会把标签页挂死。收窄过滤器,或者到命令行上运行,那里你可以用管道接 `head`。
可以从这些接进来
JSON Lines 转换
JSON Lines Converter
在 NDJSON 和 JSON 数组之间互转,解析不了的行不会中止转换,而是按行号列出来。
JSONPath 测试器
JSONPath Tester
对文档运行 JSONPath 表达式,边输入边高亮命中的节点。
JSON 格式化与校验
JSON Formatter & Validator
把 JSON 美化成缩进形式或压成一行,校验语法并直接指出出错的行和列。
YAML 格式化与校验
YAML Formatter & Validator
统一 YAML 缩进并校验语法,把会让解析器崩掉的制表符和锚点错误标出来。
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
JSON ⇄ CSV 互转
JSON ⇄ CSV
把嵌套 JSON 按点路径列名拍平成列,或者从表格重新拼回对象。
JSON 格式化与校验
JSON Formatter & Validator
把 JSON 美化成缩进形式或压成一行,校验语法并直接指出出错的行和列。
JSONPath 测试器
JSONPath Tester
对文档运行 JSONPath 表达式,边输入边高亮命中的节点。
JSON Lines 转换
JSON Lines Converter
在 NDJSON 和 JSON 数组之间互转,解析不了的行不会中止转换,而是按行号列出来。
Base64 编码解码
Base64 Encoder & Decoder
对文本和文件做 Base64 与 Base64URL 编解码,UTF-8 处理正确。
curl 转代码
curl to Code
把一条 curl 命令转成 fetch、axios、Python requests、Go、PHP 或 PowerShell 代码。