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"
欢迎加 1092845214 交流沟通呀~
本文来自博客园,作者:难德糊涂,转载请注明原文链接:https://www.cnblogs.com/yangkaiyue/p/18245146

浙公网安备 33010602011771号