如何在Python3中读取JSON结果

时间:2019-03-16 21:53:38

标签: python json rest api

我正在尝试计算从美国多拉到巴西雷亚尔的汇率。

我从巴西中央银行找到了REST API。

我的Python代码正在接收JSON格式的API返回,如下所示:

{'@ odata.context':'https://was-p.bcnet.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata $ metadata#_CotacaoDolarDia(cotacaoVenda)','value':[{'cotacaoVenda':3.8344}]}}

在我的代码中,我可以隔离结果的这一部分“ [{'cotacaoVenda':3.8344}]”,但我不能仅隔离值“ 3.8344”。

按照我的代码:

# Cotação do Dólar V.01

import json
import requests

r = requests.get("https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='03-15-2019'&$top=1&$format=json&$select=cotacaoVenda")

if r.status_code == 200:
    cotacao = json.loads(r.content)
    print(cotacao['value'])

有什么主意我该如何仅隔离JSON返回值中包含的“ 3.8344”?

谢谢

1 个答案:

答案 0 :(得分:2)

变量cotacao是一个列表,只有一个项目。因此,我们使用索引[0]访问它。该对象是一个字典,我们可以使用其键访问其字段:

import json
import requests

r = requests.get("https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='03-15-2019'&$top=1&$format=json&$select=cotacaoVenda")

if r.status_code == 200:
    cotacao = json.loads(r.content)
    print(cotacao['value'][0]['cotacaoVenda'])