如何在Python中处理从请求库获得的JSON数据?

如何在Python中处理从请求库获得的JSON数据?,python,json,pandas,python-requests,json-normalize,Python,Json,Pandas,Python Requests,Json Normalize,我对使用API键比较陌生。我尝试了IG Markets API并获得了以下信息。通过使用r.json(),我成功地创建了类型(dictionary)。我想知道如何处理这类数据并以“更好”的方式访问这些值 我试过使用: 对于键,数据()中的值: 打印(键、值) 和 数据[“位置”] 但字典似乎只包含一个键。感谢您的帮助 data = r.json() print(data) {'positions': [{'market': {'bid': 1719.59,

我对使用API键比较陌生。我尝试了IG Markets API并获得了以下信息。通过使用r.json(),我成功地创建了类型(dictionary)。我想知道如何处理这类数据并以“更好”的方式访问这些值

我试过使用: 对于键,数据()中的值: 打印(键、值) 和 数据[“位置”] 但字典似乎只包含一个键。感谢您的帮助

data = r.json()
print(data)
{'positions': [{'market': {'bid': 1719.59,
                           'delayTime': 0,
                           'epic': '-',
                           'expiry': '-',
                           'high': 1749.95,
                           'instrumentName': 'Sverige30 Cash (100SK)',
                           'instrumentType': 'INDICES',
                           'lotSize': 100.0,
                           'low': 1713.33,
                           'marketStatus': 'TRADEABLE',
                           'netChange': -25.44,
                           'offer': 1721.09,
                           'percentageChange': -1.46,
                           'scalingFactor': 1,
                           'streamingPricesAvailable': True,
                           'updateTime': '22:15:16',
                           'updateTimeUTC': '21:15:16'},
                'position': {'contractSize': 100.0,
                             'controlledRisk': False,
                             'createdDate': '2020/07/13 23:12:53:000',
                             'createdDateUTC': '2020-07-13T21:12:53',
                             'currency': 'USD',
                             'dealId': '',
                             'dealReference': '',
                             'direction': 'BUY',
                             'level': 1720.74,
                             'limitLevel': None,
                             'limitedRiskPremium': None,
                             'size': 5.0,
                             'stopLevel': None,
                             'trailingStep': None,
                             'trailingStopDistance': None}}]}

假设您的数据结构可以大得多,并且可能有多个
'positions'
,您可以循环
'positions'
并检索每个位置的
大小,如下所示:

for pos in data['positions']:
    size = pos['position']['size']
    print(size)
印刷品:

5.0

假设您的数据结构可以大得多,并且可能有多个
'positions'
,您可以循环
'positions'
并检索每个位置的
大小,如下所示:

for pos in data['positions']:
    size = pos['position']['size']
    print(size)
印刷品:

5.0
  • 在这个示例中,只有一条记录,因此我创建了一个示例,其中在
    位置有多条记录
  • 我会使用熊猫来访问所有的数据
将熊猫作为pd导入
#创建数据帧
df=pd.json_规范化(数据“位置”)
#显示(df)
market.bid market.delayTime market.epic market.Expiration market.high market.instrumentName market.LotusSize market.low market.marketStatus market.netChange market.offer market.percentageChange market.scalingFactor market.streamingPricesAvailable market.updateTime market.updateTimeUTC position.contractSizeposition.ControlledDisk position.createdDate position.createdDateUTC position.currency position.dealId position.dealReference position.direction position.level position.limitLevel position.limitedRiskPremium position.size position.stopLevel position.trailingStep position.TrailingStopDistan
0 1719.59 0--1749.95 Sverige30现金(100SK)指数100.0 1713.33可交易-25.44 1721.09-1.46 1真22:15:16 21:15:16 100.0假2020/07/13 23:12:53:000 2020-07-13T21:12:53美元购买1720.74无5.0无
1719.59 0--1749.95 Sverige30现金(100SK)指数100.0 1713.33可交易-25.44 1721.09-1.46 1真22:15:16 21:15:16 100.0假2020/07/13 23:12:53:000 2020-07-13T21:12:53美元购买1720.74无5.0无
2 1719.59 0--1749.95 Sverige30现金(100SK)指数100.0 1713.33可交易-25.44 1721.09-1.46 1真22:15:16 21:15:16 100.0假2020/07/13 23:12:53:000 2020-07-13T21:12:53美元购买1720.74无5.0无
3 1719.59 0--1749.95 Sverige30现金(100SK)指数100.0 1713.33可交易-25.44 1721.09-1.46 1真22:15:16 21:15:16 100.0假2020/07/13 23:12:53:000 2020-07-13T21:12:53美元购买1720.74无5.0无
数据
具有多条记录
  • 在这个示例中,只有一条记录,因此我创建了一个示例,其中在
    位置有多条记录
  • 我会使用熊猫来访问所有的数据
将熊猫作为pd导入
#创建数据帧
df=pd.json_规范化(数据“位置”)
#显示(df)
market.bid market.delayTime market.epic market.Expiration market.high market.instrumentName market.LotusSize market.low market.marketStatus market.netChange market.offer market.percentageChange market.scalingFactor market.streamingPricesAvailable market.updateTime market.updateTimeUTC position.contractSizeposition.ControlledDisk position.createdDate position.createdDateUTC position.currency position.dealId position.dealReference position.direction position.level position.limitLevel position.limitedRiskPremium position.size position.stopLevel position.trailingStep position.TrailingStopDistan
0 1719.59 0--1749.95 Sverige30现金(100SK)指数100.0 1713.33可交易-25.44 1721.09-1.46 1真22:15:16 21:15:16 100.0假2020/07/13 23:12:53:000 2020-07-13T21:12:53美元购买1720.74无无5.0