2017-05-08 7 views
1

내용과 함께 할 수 없습니다 인덱스 문자열JQ - 문자열

{ 
    "properties" : { 
    "CloudSanityPassed" : [ "true" ], 
    "GITCOMMIT" : [ "test1" ], 
    "buildNumber" : [ "54" ], 
    "jobName" : [ "InveergDB-UI" ] 
    }, 
    "uri" : "http://ergctory:8081/aergergory/api/storage/test-reergerglease-reergpo/cergom/cloergud/waf/ergregBUI/1ergerggregSHOT/ergregerg-34.zip" 
} 

내가이 명령

.[] | ."CloudSanityPassed" | .[] 

을 사용하는 것입니다 그리고 나는 (내가 원하는,

jq: error (at <stdin>:8): Cannot index string with string "CloudSanityPassed" 
"true" 
exit status 5 

내가 얻을이 메시지를 얻을 "true"값), 출력에 오류가 있습니다. 당신은 나를 설명 할 수 있습니까, 어떻게 피하는가, 왜 그렇게됩니까?

답변

3

jq manual에 따르면 .[]은 개체에 적용 할 때 개체의 값을 가져옵니다.

{ 
    "CloudSanityPassed": [ 
    "true" 
    ], 
    "GITCOMMIT": [ 
    "test1" 
    ], 
    "buildNumber": [ 
    "54" 
    ], 
    "jobName": [ 
    "InveergDB-UI" 
    ] 
} 
"http://ergctory:8081/aergergory/api/storage/test-reergerglease-reergpo/cergom/cloergud/waf/ergregBUI/1ergerggregSHOT/ergregerg-34.zip" 

jq 각 개체에 ."CloudSanityPassed" 연산자를 적용하려고 :

그래서 당신은 두 개체, "uri"의 값 "properties"의 값에 대한 다른 하나를 얻을. 전 개체가 사전 (일명 해시)이기 때문에

, 당신은 ."CloudSanityPassed"을 적용하고 값 ["true"]을 얻을 수 있지만, 후자는 여기에, 그래서 jq 출력 오류를 ."CloudSanityPassed"을 적용 할 수있는 단순한 문자열입니다.

아마도 원하는 명령은 .properties.CloudSanityPassed 일 것입니다.