programing

jq: 문자열로 어레이를 인덱싱할 수 없습니다.

starjava 2023. 2. 26. 08:39
반응형

jq: 문자열로 어레이를 인덱싱할 수 없습니다.

파일(「myfile」이라고 부릅니다)에는 다음과 같은 것이 있습니다.

[{
    "id": 123,
    "name": "John",
    "aux": [{
        "abc": "random",
        "def": "I want this"
    }],
    "blah": 23.11
}]

파일에 첫 번째 파일이 없으면 구문 분석할 수 있습니다.[그리고 마지막]다음과 같습니다.

$ cat myfile | jq -r '.aux[] | .def'
I want this
$

단,[그리고.]이해:

$ cat myfile | jq -r '.aux[] | .def'
jq: error: Cannot index array with string

어떻게 대처하면 좋을까요?[그리고.]jq를 사용하고 있습니까?(다른 툴로 해석할 수 있지만 jq의 올바른 사용법을 배우고 싶습니다.

다음 중 하나여야 합니다.

jq '.[].aux[].def' file.json

.[]외부 어레이에서 반복됩니다..aux[]그 다음에, 그 위에 반복한다.aux모든 노드의 어레이와.def인쇄하다.def소유물.

다음과 같이 출력됩니다.

"I want this"

큰따옴표를 없애고 싶다면-r(--raw)에 대해서jq:

jq -r '.[].aux[].def' file.json

출력:

I want this

언급URL : https://stackoverflow.com/questions/34543829/jq-cannot-index-array-with-string

반응형