Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将所有键值保存到数组变量中_Python_Json_Bash_Shell_Curl - Fatal编程技术网

Python 如何将所有键值保存到数组变量中

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

我有一个cURL命令,它返回一些json结果

我有:

{  
    "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有什么关系?它在命令行上,你读过问题了吗?