内容是
{
"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
我得到了我想要的("真"值),但是在输出中有一个错误。你能解释一下,如何避免它,为什么会发生它?
2条答案
按热度按时间k3bvogb11#
根据jq手册,
.[]
在应用于object时获得对象的值。因此,您将获得两个对象,一个值为
"properties"
,另一个值为"uri"
:jq
尝试将."CloudSanityPassed"
运算符应用于每个对象。由于前一个对象是字典(又名散列),您可以应用
."CloudSanityPassed"
并获得值["true"]
,然而,后一个对象是一个简单的字符串,您无法对其应用."CloudSanityPassed"
,因此jq
在此时输出错误。也许您需要的命令只是
.properties.CloudSanityPassed
。yacmzcpb2#
在我的例子中,
jq '[.[] | group_by(.foo)]'
给出了错误,但是jq '[.[]] | group_by(.foo)'
工作正常