Capture uma string da resposta JSON

Capture uma string da resposta JSON

Tenho abaixo a resposta Json para o método POST no bash e gostaria de capturar o valor depoisidentificação de sessão":"e atribuí-lo à variávelidentificação de sessão.

{"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":"criado","registro":{"chave":"161.35.123.111"}}],"sessionId":"b7305d77-20f1-4d57-9eb1-9b9fb4f9552d"}

#chamada de API

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

eco $request_post

Preciso de ajuda para concluir a etapa abaixo

#Cortar sessionId da resposta

ID_da_sessão=

 

Responder1

Embora a análise de estruturas json deva ser feita por um analisador json, casos triviais como esse podem ser feitos com uma ferramenta trivial e você pode canalizar a resposta sed, por exemplo:

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

A corresponde a tudo, inclusive "sessionId":", B corresponde a todos os não- seguintes ", que é o sessionId real, e C corresponde ao resto da linha. B está incluído em \(\), portanto pode ser referido na substituição como \1. Portanto, toda a linha é substituída apenas pelo sessionId.

Claro, se a saída puder ser dividida em várias linhas ou usar outras variações permitidas pelo formato json, o script ficará mais complicado.

informação relacionada