我有一些 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.bar在 jq 手册中:
如果键包含特殊字符或以数字开头,则需要用双引号将其引起来,如下所示:."foo$",或者 .["foo$"]。
例如 .["foo::bar"] 和 .["foo.bar"] 有效,而 .foo::bar 无效。
所以:
$ jq '.Data.voters."$values"[0].voterStatus' file.json
0
和
$ jq '.Data."$id"' file.json
"1"