处理JSON API响应的问题

时间:2018-01-23 00:43:46

标签: python json api

我正在尝试在Python中处理此API的结果:

https://www.cryptopia.co.nz/api/GetMarkets/BTC/12

当我将API调用的结果分配给变量时,我似乎无法迭代它甚至调用其中的对象。当我执行response[0]之类的操作时,我只会获得单个字符。我需要能够进入"数据"对象在那里并迭代它。

我被困住了所以任何帮助都会受到高度赞赏。

由于

2 个答案:

答案 0 :(得分:2)

我不确定您是如何从API检索数据的,但我建议您使用Python requests库。

你会发出请求:

import requests
r = requests.get('https://www.cryptopia.co.nz/api/GetMarkets/BTC/12')

从那里你需要JSON数据,所以将数据转换为JSON,如下所示:

data = r.json()

然后,您只需从API解析所需的属性即可。如果你想要label数组中第一个对象的Data属性,你可以这样做:

>>> data['Data'][0]['Label']
>>> '$$$/BTC'

希望有所帮助

答案 1 :(得分:2)

您没有提供太多细节,但是,您可能需要解码JSON响应。使用json模块。这样的事情应该会有所帮助,但这取决于实际的反应:

import json

data = json.loads(response)
print(data['Data'][0])

<强>输出

{'TradePairId': 1261, 'Label': '$$$/BTC', 'AskPrice': 7.5e-07, 'BidPrice': 7.2e-07, 'Low': 7.1e-07, 'High': 7.5e-07, 'Volume': 92820.5864058, 'LastPrice': 7.3e-07, 'BuyVolume': 52598028.48552139, 'SellVolume': 7797125.25042393, 'Change': 2.82, 'Open': 7.1e-07, 'Close': 7.3e-07, 'BaseVolume': 0.06782329, 'BuyBaseVolume': 1.87597261, 'SellBaseVolume': 173448022.5864104}

在这种情况下,json.loads()返回一个字典,实际数据是Data键的值,它是一个字典列表。迭代字典:

for d in data['Data']:
    print(d)

如果您使用requests模块检索数据,则只需使用响应的json方法即可访问已解码的数据。