2017-05-08 21 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"オペレータを適用しようとします:

だから、あなたは、2つのオブジェクト、"uri"の値について"properties"の値用と別のを取得します。

元オブジェクトが(ハッシュ別名)辞書ですので、あなたが."CloudSanityPassed"を適用し、値["true"]を得ることができ、しかし、後者は、あなたがここに."CloudSanityPassed"、そうjq出力エラーを適用することはできません単純な文字列です。

おそらくコマンドは.properties.CloudSanityPassedです。

関連する問題