内容是

{
  "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

08-03 15:51