如何通过jq获取数字对象属性的值?

时间:2018-12-12 11:44:13

标签: json bash key jq

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

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

我想通过jq通过键获取其属性,而我已经尝试过:

$ jq ."1" example.json
0.1

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

结果应该是

"foo"

尽管。

2 个答案:

答案 0 :(得分:2)

命令:

jq ."1" example.json

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

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

jq '."1"' example.json

通过这种方式,jq接收."1"作为其程序,并愉快地对其进行解释。

您也可以将键名放在方括号中(如您已经尝试过的),但是它并没有增加任何改进,它只是膨胀了同一程序。并且它为您提供了更多理由将其置于撇号中以保护其免受外壳破坏:

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

答案 1 :(得分:1)

使用引号:

$ jq '."1"' example.json
"foo"