JSON 응답의 첫 번째 값을 읽을 수 있습니까?

JSON 응답의 첫 번째 값을 읽을 수 있습니까?

다음은 서버로부터 받은 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 문서는 일반적으로 키가 아닌 값에 데이터를 저장해야 합니다. 그렇지 않다면 대신 배열을 사용해야 한다는 좋은 신호입니다.

관련 정보