JSONがあります。
{
"Data": {
"$id": "1",
"voters": {
"$id": "2",
"$values": [
{
"$id": "3",
"voterStatus": 0,
"voterStatusName": "Active",
"statusReasonName": "Registered",
"voterTypeName": "Regular"
}
]
}
},
"Success": true,
"ErrorMessage": null,
"WarningMessage": null
}
私はvoterStatusの価値が欲しい。これを試しましたが、.Data.voters.$values[0].voterStatus
次のエラーが発生します。
$ jq </tmp/Voter.json '.Data.voters.$values[0].voterStatus'
jq: error: syntax error, unexpected '$', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1: .Data.voters.$values[0].voterStatus
jq: 1 compile error
$
voterStatusの値を取得するにはどの式を使用する必要がありますか?
.Data.$id
値(上記の例では「1」)をどのように取得しますか?
ありがとうございます!
答え1
~からオブジェクト識別子インデックス:.foo、.foo.barjqマニュアルから:
キーに特殊文字が含まれている場合、または数字で始まる場合は、."foo$"や.["foo$"]などの二重引用符で囲む必要があります。
たとえば、.["foo::bar"] と .["foo.bar"] は有効ですが、.foo::bar は無効です。
だから:
$ jq '.Data.voters."$values"[0].voterStatus' file.json
0
そして
$ jq '.Data."$id"' file.json
"1"