美文网首页
超级好用的轻量级JSON处理命令jq

超级好用的轻量级JSON处理命令jq

作者: 南瓜慢说 | 来源:发表于2021-10-29 22:08 被阅读0次

    1 简介

    jq是一个轻量级的命令行工具,让你可以非常方便地处理JSON数据,如切分、过滤、映射、转化等,就像sed、awk、grep文本处理三剑客一样。jq是用C写的,没有运行时依赖,你可以直接下载可执行文件就可以使用了。

    2 下载安装

    官网提供了可执行文件,可以直接下载使用,当然也可以通过源码编译。

    我是直接下载的,然后给可执行权限:

    $ chmod +x jq-osx-amd64
    

    更名为jq:

    $ mv jq-osx-amd64 jq
    

    再加入PATH即可。

    $ jq --version
    jq-1.6
    

    3 如何使用

    官方提供了线上版本,可以直接使用,还给出了很多常用的例子,简直不要太方便:

    3.1 一些简单的例子

    过滤:获取全部内容:

    $ echo '{"name":"Larry Deng"}' | jq .
    {
      "name": "Larry Deng"
    }
    

    过滤:获取特定key值:

    $ echo '{"name":"Larry Deng"}' | jq .name
    "Larry Deng"
    

    计算长度:

    $ echo '{"name":"Larry Deng","age":18}' | jq '.name | length'
    

    数学计算(求立方):

    $ echo '[1,2,3]' | jq 'map(.*.*.)'
    [
      1,
      8,
      27
    ]
    

    截取数组部分(使用管道):

    $ echo '[1,2,3]' | jq '.[0:2] | map(.*.*.)'
    [
      1,
      8
    ]
    

    读取key值:

    $ echo '{"abc": 1, "abcd": 2, "Foo": 3}' | jq keys
    [
      "Foo",
      "abc",
      "abcd"
    ]
    

    3.2 处理文件

    除了可以通过管道来处理文本,也可以直接处理文件。把下面内容保存为jq.json:

    {
      "info": [
        {"name":"Larry Deng","age":"18","webSite":"www.pkslow.com"},
        {"name":"Larry","age":"01","webSite":"pkslow.com"},
        {"name":"LarryDpk","age":"20","webSite":"https://www.pkslow.com"}
      ],
      "version":"1.0.3"
    }
    

    处理如下:

    $ jq .version jq.json 
    "1.0.3"
    
    $ jq .info[0] jq.json 
    {
      "name": "Larry Deng",
      "age": "18",
      "webSite": "www.pkslow.com"
    }
    
    $ jq '.info |.[].name ' jq.json 
    "Larry Deng"
    "Larry"
    "LarryDpk"
    
    $ jq '.info |.[].webSite ' jq.json 
    "www.pkslow.com"
    "pkslow.com"
    "https://www.pkslow.com"
    

    4 总结

    jq真的很好用,特别是在我们通过curl获取json结果时。

    更多使用请参考手册:https://stedolan.github.io/jq/manual/

    相关文章

      网友评论

          本文标题:超级好用的轻量级JSON处理命令jq

          本文链接:https://www.haomeiwen.com/subject/rnewaltx.html