다음은 서버로부터 받은 JSON 응답입니다.
{
"GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32": {
"entityId": "GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32",
"mergePolicy": {
"id": "02596943-2bb0-497f-815c-ffc69bf4b9c0"
}
}
}
"GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32" 값은 항상 새로운 응답으로 변경됩니다. 다음 API 호출에서 값을 재사용하기 위해 동적으로 값에 액세스할 수 있습니까?
답변1
다음 명령으로 추출할 수 있습니다.jq
jq -r 'keys | .[0]'
답변2
사용밀러( mlr
)여러 일반적인 구조화된 형식 간에 변환할 수 있는 이 기능을 사용하면 JSON 입력을 읽고, 불행하게도 태그가 지정된 키를 다시 표시하고 key
, 데이터를 평면화하고 key.entityId
필드 값을 추출할 수 있습니다. 출력은 헤더가 없는 "NIDX"(인덱스 번호(툴킷 스타일)) 형식으로 이 애플리케이션에 적합합니다.
$ mlr --j2n label key then flatten then cut -f key.entityId file.json
GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32
이 옵션은 (JSON 입력) 및 (NIDX 출력) 의 약어입니다 --j2n
.--ijson
--onidx
거의 동일한 작업을 사용합니다.jq
(매우 일반적인 JSON 프로세서):
$ jq -r '.[].entityId' file.json
GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32
두 명령 모두 최상위 키에는 실제로 관심이 없지만 entityId
내부 구조에서 키 값을 찾습니다. JSON 문서는 일반적으로 키가 아닌 값에 데이터를 저장해야 합니다. 그렇지 않다면 대신 배열을 사용해야 한다는 좋은 신호입니다.