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

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

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

#API call

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

echo $ request_post

Мне нужна помощь, чтобы выполнить шаг

] # Вырезать идентификатор сеанса из ответа

se ssion_ID =

0
задан 8 June 2021 в 21:43

1 ответ

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

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

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

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

0
ответ дан 28 July 2021 в 11:30

Другие вопросы по тегам:

Похожие вопросы: