我在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"
尽管。
答案 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"