我正在尝试访问端点http://myapp.com/health
并获取version
值。我该怎么做?请注意,我计划在 TeamCity 中运行此脚本。
回复来自http://myapp.com/health
:
{
"Status": "online",
"Version": "1.23",
"Environment": "Test"
}
答案1
jq
方法。
尝试使用jq
像这样:
curl -s 'http://myapp.com/health' | jq -r '.Version'
创建一个 Bash 函数。
或者您可以创建一个像这样的 Bash 函数parse_json
;在这里找到它StackOverflow 的答案在这里:
function parse_json()
{
echo $1 | \
sed -e 's/[{}]/''/g' | \
sed -e 's/", "/'\",\"'/g' | \
sed -e 's/" ,"/'\",\"'/g' | \
sed -e 's/" , "/'\",\"'/g' | \
sed -e 's/","/'\"---SEPERATOR---\"'/g' | \
awk -F=':' -v RS='---SEPERATOR---' "\$1~/\"$2\"/ {print}" | \
sed -e "s/\"$2\"://" | \
tr -d "\n\t" | \
sed -e 's/\\"/"/g' | \
sed -e 's/\\\\/\\/g' | \
sed -e 's/^[ \t]*//g' | \
sed -e 's/^"//' -e 's/"$//'
}
它的工作原理如下;使用内联 JSON 作为概念证明:
parse_json '{
"Status": "online",
"Version": "1.23",
"Environment": "Test"
}' Version
输出如下:
1.23
awk
方法。
或者老实说这个awk
方法——从这个答案— 似乎是最跨平台的(至少在类 Unix 系统上);再次使用内联 JSON 作为概念证明:
echo '{
"Status": "online",
"Version": "1.23",
"Environment": "Test"
}' | awk 'BEGIN { FS="\""; RS="," }; { if ($2 == "Version") {print $4} }'