3 个不稳定版本
0.4.0 | 2022年2月7日 |
---|---|
0.3.1 | 2022年2月4日 |
0.3.0 | 2022年2月3日 |
#31 in #jq
10KB
149 行
jjq
使用 JavaScript 处理 JSON 输入的工具,无 DSL!
简介
jq 是一个很棒的工具,如果你熟悉它,可以继续使用。
我不经常使用 jq
,因此我不记得它的 filter DSL 语法,但我确实知道 JavaScript,因此对我来说使用 node 运行脚本会更容易更快。
jjq
是一种方便的方式,可以将 jq
的可用性和 nodejs 的脚本能力结合起来。
注意
默认情况下,如果没有传递代码,jjq
将将输入的 JSON 美化打印到 stdout。
可以在脚本中使用变量名 it
访问输入的 JSON。
示例
jjq 'it.feeds[0].multiMedia[0]' -f jsonfilewithhierarchy-100-100.json
echo '{"key": "value"}' | jjq
jjq 'it[0]' < EmployeeData.json
cat EmployeeData.json | jjq 'it.map(t => ({name: t.name, age: t.email}))'
# pass `-i` flag to include a js file
jjq 'let p = it.map(t => t.password); max(p.map(len))' -i demos/libs.js -f EmployeeData.json
安装
如果你已经安装了 Rust 工具链,你只需这样做:
cargo install js-json-query
获取 Rust 工具链非常简单,如果你感兴趣,可以访问 这里。
或者,你可以从 发布页面 下载预构建的二进制文件。
使用
Usage: jjq [<script>] [-f <file>] [-v] [-i <includes>]
A tool for processing JSON inputs with JavaScript, no dsl
Positional Arguments:
script code to process the json input
Options:
-f, --file path to json file
-v, --version get version information
-i, --includes js files to include
--help display usage information
限制
-
传递的代码应该是有效的 JavaScript 代码,因为这个工具使用 v8 引擎运行脚本,因此有时可能会相当冗长。
-
传递的脚本应该以表达式结束,而不是以语句结束,如果脚本以语句结束,则将打印
undefined
。
示例
jjq 'let t = it.key;' --file your-json-file.json # output -> undefined
jjq 'let t = it.key; t' --file your-json-file.json # output json -> {...}
依赖项
~76MB
~1.5M SLoC