Python 如何将所有键值保存到数组变量中
我有一个cURL命令,它返回一些json结果 我有:Python 如何将所有键值保存到数组变量中,python,json,bash,shell,curl,Python,Json,Bash,Shell,Curl,我有一个cURL命令,它返回一些json结果 我有: { "all":[ { "id":"1" }, { "id":"2" }, { "id":"3" } ] } 我的目标是在Bash中将所有id值检索到一个数组中。我知道如何检索一个特定的ID,知道这个位置。 以下是我尝试过的: #!/bin/bash
{
"all":[
{
"id":"1"
},
{
"id":"2"
},
{
"id":"3"
}
]
}
我的目标是在Bash中将所有id值检索到一个数组中。我知道如何检索一个特定的ID,知道这个位置。
以下是我尝试过的:
#!/bin/bash
CURL_COMM=$(curl https://DOMAIN/API -H "X-Auth-Token: TOKEN" | python -c "import sys, json; print json.load(sys.stdin)['all'][0]['id']")
echo "$CURL_COMM"
这将按预期输出1,但我需要在不知道元素数量的情况下检索其他ID。可能吗
是否可以检索数组中包含的值,如:
{
"all":[
{
"id":"1",
"actions":[
"power",
"reboot"
]
},
{
"id":"2"
},
{
"id":"3"
}
]
}
是否可以检索操作列表?您可以使用列表理解:
python -c "import sys, json; print [i['id'] for i in json.load(sys.stdin)['all']]"
与往常一样,这使得从命令行使用JSON变得容易
第一个字符串包含一个JSON数组:
$ CURL_COMM=$(curl blah | jq -c '[ .all[].id | tonumber ]')
$ echo $CURL_COMM
[1,2,3]
第一个作为bash数组:
$ CURL_COMM=($(curl blah | jq '.all[].id | tonumber'))
$ echo ${CURL_COMM[1]}
2
第二个:
$ jq -c '.all[0].actions' example.json
["power","reboot"]
这和Python有什么关系?它在命令行上,你读过问题了吗?