Захват строки из ответа JSON

Захват строки из ответа JSON

У меня есть ответ Json для метода POST в bash, и я хотел бы захватить значение послеидентификатор сессии":"и присвоить его переменнойидентификатор сессии.

{"changeId":"79911476-53a4-46e1-8ffd-422436b51ad1","changeType":"создано","record":{"key":"159.65.198.219"}},{"changeId":"bd52dcbd-a5ab-4557-b2b8-88793c2d2964","changeType":"создано","record":{"key":"161.35.111.167"}},{"changeId":"f4f5c94e-6c06-473c-b810-b7bbd69c71ad","changeType":"создано","record":{"key":"161.35.123.111"}}],"sessionId":"b7305d77-20f1-4d57-9eb1-9b9fb4f9552d"}

#API-вызов

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

эхо $request_post

Мне нужна помощь для выполнения следующего шага

#Вырезать sessionId из ответа

session_ID=

 

решение1

Хотя разбор структур JSON должен выполняться с помощью парсера JSON, такие тривиальные случаи, как этот, можно выполнить с помощью тривиального инструмента, и вы можете передать ответ по конвейеру sed, например:

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

A соответствует всему до и включая "sessionId":", B соответствует всему последующему не- ", что является фактическим sessionId, а C соответствует остальной части строки. B включен в \(\), поэтому на него можно ссылаться при замене как \1. Таким образом, вся строка заменяется только sessionId.

Конечно, если вывод можно разделить на несколько строк или использовать другие вариации, допускаемые форматом JSON, скрипт станет сложнее.

Связанный контент