首页 > 解决方案 > 在 Python 中从 JSON 访问值

问题描述

嗨,我正在尝试学习 python。我正在尝试获取美元对澳元的汇率。但我正在努力从存储在数据中的 JSON 中访问信息。我将如何在“conversion_rates”中获得“AUD”:1.4817:

# Where USD is the base currency you want to use
    url = 'https://v6.exchangerate-api.com/v6/MY_API_KEY/latest/USD'
# Making our request
    response = requests.get(url)
    data = response.json()

这是存储在数据中的内容

{
    "result": "success",
    "documentation": "https://www.exchangerate-api.com/docs",
    "terms_of_use": "https://www.exchangerate-api.com/terms",
    "time_last_update_unix": 1585267200,
    "time_last_update_utc": "Fri, 27 Mar 2020 00:00:00 +0000",
    "time_next_update_unix": 1585353700,
    "time_next_update_utc": "Sat, 28 Mar 2020 00:00:00 +0000",
    "base_code": "USD",
    "conversion_rates": {
        "USD": 1,
        "AUD": 1.4817,
        "BGN": 1.7741,
        "CAD": 1.3168,
        "CHF": 0.9774,
        "CNY": 6.9454,
        "EGP": 15.7361,
        "EUR": 0.9013,
        "GBP": 0.7679,
        "...": 7.8536,
        "...": 1.3127,
        "...": 7.4722, etc. etc.
    }
}

谢谢

标签: pythonjsonvisual-studio

解决方案


response.json()将 json-data 作为dict. 您可以通过dict[key]或访问字典dict.get(key, default)。如果找不到密钥,第一个将引发异常。如果未找到密钥或您为get-call 提供的默认值,则第二个返回默认值 None 。

因此,在您的情况下,它将是:

data['conversion_rates']['AUD']

或者例如

data.get('conversion_rates', default={}).get('AUD')

您可能想选择第一个机会,并用 try/catch 包围它:

try:
    aud_conversion_rate = data['conversion_rates']['AUD']
except KeyError:
    print("Could not get the USD to AUD conversion rate")

供参考:https ://docs.python.org/3/tutorial/datastructures.html#dictionaries


推荐阅读