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

Json 如何通过jq获取数值对象属性的值?,json,bash,key,jq,Json,Bash,Key,Jq,我在example.json文件中有一个带有数字键的json对象: { "1": "foo", "2": "bar" } 我想通过jq键获取其属性,我已经尝试了: $ jq ."1" example.json 0.1 及 结果应该是 "foo" 尽管如此。使用引号: $ jq '."1"' example.json "foo" 使用引号: $ jq '."1"' example.json "foo" 命令: jq ."1" example.json 不起作用,因为引号由she

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

{
  "1": "foo",
  "2": "bar"
}
我想通过
jq
键获取其属性,我已经尝试了:

$ jq ."1" example.json
0.1

结果应该是

"foo"
尽管如此。

使用引号:

$ jq '."1"' example.json
"foo"
使用引号:

$ jq '."1"' example.json
"foo"
命令:

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

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

jq '."1"' example.json
通过这种方式,
jq
接收
“1”
作为其程序并愉快地解释它

您也可以将密钥名称放在方括号中(正如您已经尝试过的),但这并没有增加任何改进,它只是同一个程序的膨胀。它给了你更多的理由把它放在撇号中以保护它不受外壳的伤害:

jq '.["1"]' example.json
命令:

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

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

jq '."1"' example.json
通过这种方式,
jq
接收
“1”
作为其程序并愉快地解释它

您也可以将密钥名称放在方括号中(正如您已经尝试过的),但这并没有增加任何改进,它只是同一个程序的膨胀。它给了你更多的理由把它放在撇号中以保护它不受外壳的伤害:

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