jq - 处理json串

简介

主要在linux中,对json串进行美化和取值,我经常用在shell里


json串美化

[root@master ~]# echo '{"name":"vick","age":19}' | jq
{
  "name": "vick",
  "age": 19
}

取值

取kv对

# 取一个
[root@master ~]# echo '{"name":"vick","age":19}' | jq '.name'
"vick"

# 取多个
[root@master ~]# echo '{"name":"vick","age":19}' | jq '.name,.age'
"vick"
19

取所有key

# map结构取出结果是keys
[root@master ~]# echo '{"name":"vick","age":19}' | jq keys
[
  "age",
  "name"
]

# list结构取出结果是索引
[root@master ~]# echo '[1,2,3,4,5]' | jq keys
[
  0,
  1,
  2,
  3,
  4
]

取list

[root@master ~]# echo '[1,2,3,4,5]' | jq .[]
1
2
3
4
5

多个过滤器

[root@master ~]# echo '[{"name":"Tom"},{"name":"Tim"}]' | jq .[]
{
  "name": "Tom"
}
{
  "name": "Tim"
}

# 递进取值
[root@master ~]# echo '[{"name":"Tom"},{"name":"Tim"}]' | jq '.[] | .name'
"Tom"
"Tim"

判断取值

[root@master ~]# echo '[1,2,3,4,5]' | jq 'map(select (. >= 3))'
[
  3,
  4,
  5
]

判断输出

[root@master ~]# echo $?|jq 'if . == 0 then "ok" elif . == 1 then "1" else "err" end'
"err"

计算

[root@master ~]# echo '[1,2,3,4,5]' | jq 'map(.+1)'
[
  2,
  3,
  4,
  5,
  6
]

格式化输出

# 直接取值
[root@master ~]# echo '"Tim"' | jq '"my name is \(.)"'
"my name is Tim"

# map取值
[root@master ~]# echo '{"name":"vick"}' | jq '"my name is \(.name)"'
"my name is vick"
posted @   难德糊涂  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示