Abh*_*ogi 3 key special-characters jq
输入 JSON:
{
"abc": {
"@def-ghi": "value1",
"xyz": "value2"
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取 field 的价值@def-ghi。
? $?=0 ? echo '{"abc": {"@def-ghi": "value1", "xyz": "value2"}}' | jq '.abc.xyz'
"value2"
? $?=0 ? echo '{"abc": {"@def-ghi": "value1", "xyz": "value2"}}' | jq '.abc.@def-ghi'
jq: error: syntax error, unexpected '-', expecting QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.abc.@def-ghi
jq: 1 compile error
? $?=3 ?
Run Code Online (Sandbox Code Playgroud)
如何正确转义字段名称?
最可靠的替代方法是使用基本形式:
.[KEY]
Run Code Online (Sandbox Code Playgroud)
其中 KEY 是 JSON 字符串,包括外部引号。
但是,这种形式必须是管道化的,因此您必须编写:
jq '.abc|.["@def-ghi"]'
Run Code Online (Sandbox Code Playgroud)
(该.[_]形式也可用于数组,但当然 _ 必须是整数。)