2017-05-08 48 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 

我得到的,我想要( 「真」值),但輸出中存在錯誤。你能否解釋我,如何避免它,爲什麼會發生?

回答

3

根據jq manual,.[]獲取應用於對象時的對象值。

所以,你得到兩個對象,一個爲"properties"價值,另一個的"uri"值:

{ 
    "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"操作應用到每個對象。

由於前者目標是字典(即哈希),就可以申請."CloudSanityPassed"並獲得價值["true"],然而,後者是你不能在這裏申請."CloudSanityPassed",所以jq輸出錯誤的簡單字符串。

也許你想要的命令只是.properties.CloudSanityPassed