首页 > 解决方案 > 如何通过 jq 获取数字对象属性的值?

问题描述

我在文件中有一个带有数字键的 json 对象example.json

{
  "1": "foo",
  "2": "bar"
}

我想通过 key 获取它的属性jq,我已经尝试过:

$ jq ."1" example.json
0.1

jq .["1"] example.json
jq: error (at example.json:4): Cannot index object with number

结果应该是

"foo"

尽管。

标签: jsonbashkeyjq

解决方案


命令:

jq ."1" example.json

不起作用,因为引号由 shell 解释,jq接收的第一个参数是.1. 上面的命令与报告相同,jq .1 example.json并且不正确jq

您需要将jq程序括在撇号中,以防止 shell 解释其中的任何字符:

jq '."1"' example.json

这样,jq接收."1"它的程序并愉快地解释它。

您也可以将键名放在方括号中(正如您已经尝试过的那样),但它不会增加任何改进,它只是同一个程序臃肿。它给了你更多的理由把它放在撇号中以保护它免受外壳的影响:

jq '.["1"]' example.json

推荐阅读