内容是
{
"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”值),但是输出中有错误。您能给我解释一下,如何避免它以及为什么会发生吗?
最佳答案
根据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
。