一、背景
在开发当中,为了运行时方便替换代码,有时会直接使用 shell 来进行简单逻辑的开发,在 脚本中 若通过 curl 调用其它服务的 restful 接口,需要对返回的 json 数据进行解析,此时可以 使用 jq 工具方便解析
二、知识
1、安装
jq 官网:https://stedolan.github.io/jq/manual/
(1) 下载二进制文件
下载地址:https://stedolan.github.io/jq/download/
在这里可以选择适配 要安装 linux 操作系统的 jq 版本
我的 linux 操作系统是 arm64 位的,所以选择 了 jq 1.6 binaries for 64-bit
这里可以点击 “ 64-bit” 选择下载,若 linux 操作系统所属服务器是 能够上网的,可以直接使用
wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
jq-linux64 是一个文件,对其进行重命名,叫 jq
(2) 下载源码进行编译安装
(3) 使用 yum 安装
yum install jq
3、基础知识
(1) echo $a | ./jq .
以 json 格式展示 变量 a 中存储的 json 字符串
(2)
三、示例
json 字符串
{ "code":"0", "message":"success", "data":[ { "vip":"10.19.115.188", "groupName":"10.19.115.188-主备", "groupId":0, "nodes":[ { "ipAddress":"10.19.115.202", "haStatus":"master", "runningStatus":"0" }, { "ipAddress":"10.19.115.189", "haStatus":"backup", "runningStatus":"0" } ], "allRunning":"0", "haCorrect":"0" } ] }
(1) echo $a | ./jq .
(2) echo $a|./jq '.data' 返回数组
(3)echo $a|./jq '.data|tostring' 返回字符串 (将 data 的值 数组转为了字符串返回)
(4) echo $a |./jq '.code' 返回字符串
(5) echo $a |./jq '.data[]' 直接返回数组 data 中所有对象,以下截图的结果 中 没有 数组特有的标志 []