14

我是 jq 的新手,在解析我的 json 时遇到问题

我有一个 json 存储在这样的变量中

temp='{ "1": { "my_name": "one" }, "2": { "my_name": "two" } }'

现在我需要为其他两个条目获取 my_name 的值

我尝试过这样的事情

echo $temp | jq '.1' //out put 0.1
I was assuming to get { "my_name": "one" } 

同样为了获得 my_name 值,我做了

echo $temp | jq '.1.my_name' // Its output is giving me error

任何人都可以帮助确定我的语法有什么问题以及如何纠正它。

4

2 回答 2

13

只是数字被解释为浮点数。您需要在明确是键字符串的上下文中使用它。

echo "$temp" | jq '.["1"]["my_name"]'

echo "$temp" | jq '.["1"]'

获取包含的字典。

有了足够新的jq(我认为> = 1.4),您也可以说

echo "$temp" | jq '."1".my_name'
于 2015-03-04T05:14:55.027 回答
5

每当您尝试引用不是有效标识符的键时,都必须引用它。有关详细信息,请参阅手册。

要选择 key 下的项目1,您可以这样做:

."1"

对于如何获取my_name值的其他问题,您可以这样做:

to_entries | map(.value.my_name)
于 2015-03-04T06:12:40.880 回答