Работа с ответом от подписки Websockets.
Ответ читается так:
{'jsonrpc': '2.0', 'method': 'subscription', 'params': {'channel': 'book.BTC-PERPETUAL.none.1.100ms', 'data': {'timestamp': 1588975154127, 'instrument_name': 'BTC-PERPETUAL', 'change_id': 19078703948, 'bids': [[10019.5, 8530.0]], 'asks': [[10020.0, 506290.0]]}}}
И я пытаюсь достичь первого и единственного значения внутри "bids"
и "asks"
массивы через json.loads()
Код выглядит так:
async def __async__get_ticks(self):
async with self.ws as echo:
await echo.send(json.dumps(self.request))
while True:
response = await echo.receive()
responseJson = json.loads(response)
print(responseJson["params"]["data"])
И ошибка говорит:
print(responseJson["params"]["data"])
KeyError: 'params'
Как бы я ни старался, он не хочет перехватывать какой-либо из JSON после "jsonprc"
, для чего он успешно возвращает 2.0
. Все, что выходит за рамки этого, всегда приводит к ошибке.
Я пробовал использовать .get()
, и это помогает go на один уровень глубже, но все же не больше.
Любые идеи о том, как это сделать отформатируйте это правильно и получите bids
и asks
?
Заранее спасибо.