我如何从保存在python变量中的json(获取请求)输出中过滤

时间:2019-06-07 13:17:56

标签: python json

get请求的输出保存在变量中。 如何过滤变量中的数据以仅显示我需要的信息?

这是我检索json的方式:

import requests
url = "https://"+nsip+"/nitro/v1/config/server/"

headers = {
        'Cache-Control': "no-cache"
    }
response = requests.get(url=url, headers=headers, auth=(usr,pwd), verify=False)
jsdata = response.json()
print(json.dumps(jsdata, indent=3))

输出:

{
    "errorcode": 0,
    "message": "Done",
    "severity": "NONE",
    "server": [
        {
            "name": "server1",
            "ipaddress": "192.168.134.28",
            "boundtd": "0"
        },
        {
            "name": "server2",
            "ipaddress": "192.168.134.18",
            "boundtd": "0"
        },
        {
            "name": "server3",
            "ipaddress": "192.168.134.9",
            "boundtd": "0"
        }
    ]
}

我只想过滤和打印“名称”,而忽略其余的名称:

"name": "server1"
"name": "server2"

如果我这样做:

servers = jsdata['server'][1]['name']
print(servers)

它仅显示第一个服务器名称。

也尝试过:

for i in jsdata:
        query = ({'i["name"]'})
print(query)

1 个答案:

答案 0 :(得分:1)

要获取 "apiList":[ { "apiName": "campaign", "clientObject": "campaigns" }, { "apiName": "customField", "clientObject": "customfields" }, { "apiName": "customRedirect", "clientObject": "customredirects" }, { "apiName": "emailClick", "clientObject": "emailclicks", "noSortBy": true }, ... 的列表作为结果:

dict

或者获取>>> [{'name': srv['name']} for srv in jsdata['server']] [{'name': 'server1'}, {'name': 'server2'}, {'name': 'server3'}] 的列表作为结果:

str