key - jq 中包含 '@' 和 '-' 的转义字段名称?

标签 key special-characters jq

这个问题在这里已经有了答案:





How to use jq when the variable has reserved characters?

(2 个回答)


3年前关闭。




输入 JSON:

{
  "abc": {
    "@def-ghi": "value1",
    "xyz": "value2"
  }
}

我正在尝试获取字段 @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 ➤

如何正确转义字段名称?

最佳答案

您只需要引用 key :

$ echo '...' | jq '.abc."@def-ghi"'
"value1"

关于key - jq 中包含 '@' 和 '-' 的转义字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51494389/

相关文章:

json - 复杂的 jq 过滤器

mysql - MySQL 性能的表主键

Python:仅使用字典中的某些键进行for循环

C for 循环打印不正确,字符乱序

java - 在 java 映射中使用非 Ascii 字符串作为键时没有得到任何值

subdomain - 子域中允许使用哪些字符?

environment-variables - JQ在保存环境变量的同时添加单引号

windows - 比较windows jq中的 'YYYY-mm-dd HH:MM:SS'格式时间戳

mysql - 使用生成的键批量插入处理唯一的重复条目

mysql - 为什么查询不使用索引以及如何优化它?