jq是一个很轻量却很强大的命令行下的json解析器。jq是json中的“sed”命令,它可以用来slice、filter、map、transform json数据。jq是用C编写的,它没有其他依赖,你可以直接下载一个可执行文件,然后拷贝到其他机器上去执行,完全没有问题。
安装
jq用C语言编写,运行时无需其他依赖,它几乎可以运行在任何平台上。如果你是Linux、OS X、或者Windows,可以直接下载二级制版本。
二进制版本知己可以运行,但是在OS X、和Linux上,记得chmod +x jq
- jq 1.5已经集成到Debian和Ubuntu的官方源中,运行sudo apt-get install jq即可
- jq 1.5已集成到Fedora的官方源中,运行sudo dnf install jq即可
- jq 1.4已经集成到openSuse官方源中,运行sudo zypper install jq即可
- Arch用户,已经在AUR中准备了PKGBUILD,参考ArchWiki去安装
- 更多
语法
github上有一个json的接口,调用它会得到一串json,下面的例子就使用这串json数据。
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5'
上面的接口已经返回了格式化好的json串,如果没有,我们可以使用jq,格式化一下:
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.'
我们还可以只取其中的第一条数据:
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[0]'
只取某些特定的字段,下面是取出第一个数据中的,commit节点下的message字段和commit节点下的committer节点下的name字段:
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[0] | {message: .commit.message, name: .commit.committer.name}'
//结果
{
"message": "Merge pull request #162 from stedolan/utf8-fixes\n\nUtf8 fixes. Closes #161",
"name": "Stephen Dolan"
}
.[0]取得了JsonArray中的第一个元素;.commit.message取得了json中具体的属性值.
jq '.[] | {message: .commit.message, name: .commit.committer.name}'
取出全部的commit:
jq '.[] | {message: .commit.message, name: .commit.committer.name}'
.[] 取出全部的元素,然后将相应的字段赋值给message,name.
如果想把上面的结果放在Array里,我们可以这样:
jq '[.[] | {message: .commit.message, name: .commit.committer.name}]'
//结果
[
{
"message": "Merge pull request #163 from stedolan/utf8-fixes\n\nUtf8 fixes. Closes #161",
"name": "Stephen Dolan"
},
{
"message": "Reject all overlong UTF8 sequences.",
"name": "Stephen Dolan"
}
]
多点击此处 https://stedolan.github.io/jq/manual/
版权声明
本站文章、图片、视频等(除转载外),均采用知识共享署名 4.0 国际许可协议(CC BY-NC-SA 4.0),转载请注明出处、非商业性使用、并且以相同协议共享。
© 空空博客,本文链接:https://www.yeetrack.com/?p=1201
近期评论