我是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
任何人都可以帮助确定我的语法有什么问题,我该如何纠正它。
答案 0 :(得分:7)
只是数字被解释为浮点数。您需要在明确是键字符串的上下文中使用它。
echo "$temp" | jq '.["1"]["my_name"]'
和
echo "$temp" | jq '.["1"]'
获取包含字典。
如果有足够新的jq
(我认为> = 1.4),您也可以说
echo "$temp" | jq '."1".my_name'
答案 1 :(得分:3)
每当您尝试引用不是有效标识符的密钥时,您都必须引用它。有关详细信息,请参阅manual。
要选择键1
下的项目,请执行以下操作:
."1"
关于如何获取my_name
值的其他问题,您可以这样做:
to_entries | map(.value.my_name)