Linux 命令行 jq 让你更优雅的处理 json 数据

https://github.com/stedolan/jq

https://stedolan.github.io/jq/manual/

brew install jq

data.json

$ cat data.json 
{
  "code": 0,
  "msg": "",
  "data": {
    "pageNo": 1,
    "pageSize": 10,
    "total": 5,
    "list": [
      {
        "id": null,
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}
$ cat data.json | jq .
{
  "code": 0,
  "msg": "",
  "data": {
    "pageNo": 1,
    "pageSize": 10,
    "total": 5,
    "list": [
      {
        "id": null,
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}
cat data.json | jq .code
0

列表中的单个

$ cat data.json | jq .data.list[0]
{
  "id": null,
  "city": "北京",
  "name": null,
  "email": null
}

列表中的多个

$ cat data.json | jq .data.list[0,1]
{
  "id": null,
  "city": "北京",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "上海",
  "name": null,
  "email": null
}

列表的全部

$ cat data.json | jq .data.list[]
{
  "id": null,
  "city": "北京",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "上海",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "广州",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "深圳",
  "name": null,
  "email": null
}
{
  "id": null,
  "city": "杭州",
  "name": null,
  "email": null
}

列表内的指定字段

$ cat data.json | jq .data.list[].city
"北京"
"上海"
"广州"
"深圳"
"杭州"

列表内的指定字段并删除双引号

$ cat data.json | jq .data.list[].city | tr -d '\"'
北京
上海
广州
深圳
杭州

删除单个属性

$ cat data.json | jq 'del(.msg)'
{
  "code": 0,
  "data": {
    "pageNo": 1,
    "pageSize": 10,
    "total": 5,
    "list": [
      {
        "id": null,
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}

删除多个属性

$ cat data.json | jq 'del(.msg,.data.pageNo,.data.pageSize)'
{
  "code": 0,
  "data": {
    "total": 5,
    "list": [
      {
        "id": null,
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "id": null,
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}

删除列表内的属性

$ cat data.json | jq 'del(.msg,.data.pageNo,.data.pageSize,.data.list[].id)'
{
  "code": 0,
  "data": {
    "total": 5,
    "list": [
      {
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "city": "杭州",
        "name": null,
        "email": null
      }
    ]
  }
}

把全部的杭州替换成成都

$ cat data.json | jq 'del(.msg,.data.pageNo,.data.pageSize,.data.list[].id)' | sed 's/杭州/成都/g'
{
  "code": 0,
  "data": {
    "total": 5,
    "list": [
      {
        "city": "北京",
        "name": null,
        "email": null
      },
      {
        "city": "上海",
        "name": null,
        "email": null
      },
      {
        "city": "广州",
        "name": null,
        "email": null
      },
      {
        "city": "深圳",
        "name": null,
        "email": null
      },
      {
        "city": "成都",
        "name": null,
        "email": null
      }
    ]
  }
}

更多 jq 相关 https://blog.csdn.net/wzj_110/article/details/117387891

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值