簡體   English   中英

如何使用JQ解析JSON響應

[英]How to parse json response using JQ

我需要獲取目標偵聽器已打開的目標組,以便可以將其存儲在變量中並對該目標組執行運行狀況檢查。 這是我在做什么:-

 aws elbv2 --region us-east-1 describe-rules '--listener-arn=************' { "Rules": [ { "Priority": "1", "Conditions": [ { "Field": "host-header", "HostHeaderConfig": { "Values": [ "****" ] }, "Values": [ "****" ] } ], "RuleArn": "xyz", "IsDefault": false, "Actions": [ { "TargetGroupArn": "****", "Type": "forward" } ] }, { "Priority": "default", "Conditions": [], "RuleArn": "abc", "IsDefault": true, "Actions": [ { "TargetGroupArn": "***", "Type": "forward", "Order": 1 } ] } ] } 

現在,我必須提取“ RuleArn”的TargetGroupArn的值:“ xyz”,這意味着我需要獲取該targetgroup arn,以便我可以在下一個命令中使用它:

 aws elbv2 --region us-east-1 describe-target-health --target-group-arn=*** 

一旦運行,我將獲得健康目標的json輸出,我需要使用if和else條件進一步查詢。 我如何獲得jq來解析初始json以如上所述捕獲目標組arn,以便我可以將其用於將來的命令。 請注意,在我們的情況下,“ RuleArn”:“ xyz”的TargetGroupArn的值不是恆定的,因為它們一直從一個目標組切換到另一個目標組。

您可以通過兩種方式實現。 第一種是通過--query參數使用AWS CLI內置的JMES路徑。

aws elbv2 --region us-west-2 describe-rules \
    '--listener-arn=************' \
    --query "Rules[?RuleArn == 'xyz'].Actions[0].TargetGroupArn" --output text

如果需要的話,秒是使用jq

aws elbv2 --region us-west-2 describe-rules \
    '--listener-arn=************'' \
    --output json | jq -r '.Rules[]|select(.RuleArn == "xyz")| .Actions[0].TargetGroupArn'

您可以使用

var res = JSON.parse(response);

得到的字符串作為響應被解析為Json。

要使用jq獲取TargetGroupArn ,可以使用以下filter

aws elbv2 \
  --region us-east-1 \
  describe-rules \
  --listener-arn="************" \
  | jq ".Rules[].Actions[].TargetGroupArn"

另一種方法是使用aws cli--query選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM