從 JSON 回應中擷取字串

從 JSON 回應中擷取字串

我對 bash 中的 POST 方法有以下 Json 響應,並希望在之後捕獲值會話 ID":"並將其分配給變數會話ID

{“changeId”:“79911476-53a4-46e1-8ffd-422436b51ad1”,“changeType”:“已建立”,“記錄”:{“key”:“159.65.198.219”}},{“changeIdId”:“bd522 - a5ab-4557-b2b8-88793c2d2964","changeType":"已建立","re​​cord":{"key":"161.35.111.167"}},{"changeId":"f4f5c94e-6c06-473c -b810-b7bbd69c71ad" ,"changeType":"已建立","re​​cord":{"key":"161.35.123.111"}}],“會話ID”:“b7305d77-20f1-4d57-9eb1-9b9fb4f9552d”}

#API呼叫

request_post="$(curl --insecure --request POST "endpoint_URL")"

回顯 $request_post

我需要幫助才能完成以下步驟

#從回應中截取sessionId

會話ID=

 

答案1

雖然解析 json 結構應該由 json 解析器完成,但像這樣的簡單情況可以使用簡單的工具來完成,並且您可以透過管道傳遞答案sed,例如:

sed 's/.*"sessionId":"\([^"]*\).*/\1/'
      \______________/  \___/  \/
             A            B    C

A 符合 之前的所有內容(包括 )"sessionId":",B 符合所有後續的非",即實際的 sessionId,C 符合該行的其餘部分。 B 包含在其中\(\),因此可以在替換中稱為\1。因此整行僅被 sessionId 取代。

當然,如果輸出可以分為幾行或使用 json 格式允許的其他變體,則腳本將變得更加複雜。

相關內容