一、背景
在開發當中,為了運行時方便替換代碼,有時會直接使用 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 中所有對象,以下截圖的結果 中 沒有 數組特有的標志 []

