#python #json #parsing #flask
#python #json #синтаксический анализ #flask
Вопрос:
Существует структура массива, которую я получаю как json. Мне нужно получить доступ к некоторым элементам в этой структуре массива.
‘assets’: [{‘asset’: ‘USDT’,
Мне нужно получить доступ к объекту walletBalance в нем. Как я могу это сделать?
def account_balance(webhook_data):
account_data = client.futures_account()
temp_account_data = json.dumps(account_data)
test = json.loads(temp_account_data)
for sym in test:
print(sym['assets'])
return account_balance
В приведенном выше фрагменте кода объект отображается как json, но я не могу получить доступ к содержимому «активов»
{'feeTier': 0,
'canTrade': True,
'canDeposit': True,
'canWithdraw': True,
'updateTime': 0,
'totalInitialMargin': '0.00000000',
'totalMaintMargin': '0.00000000',
'totalWalletBalance': '32.51609961',
'totalUnrealizedProfit': '0.00000000',
'totalMarginBalance': '32.51609961',
'totalPositionInitialMargin': '0.00000000',
'totalOpenOrderInitialMargin': '0.00000000',
'maxWithdrawAmount': '32.51609961',
'assets':
[
{'asset': 'USDT',
'walletBalance': '32.51609961',
'unrealizedProfit': '0.00000000',
'marginBalance': '32.51609961',
'maintMargin': '0.00000000',
'initialMargin': '0.00000000',
'positionInitialMargin': '0.00000000',
'openOrderInitialMargin': '0.00000000',
'maxWithdrawAmount': '32.51609961'
},
{'asset': 'BNB', 'walletBalance': '0.00000000',
'unrealizedProfit': '0.00000000', 'marginBalance': '0.00000000',
'maintMargin': '0.00000000', 'initialMargin': '0.00000000',
'positionInitialMargin': '0.00000000',
'openOrderInitialMargin': '0.00000000',
'maxWithdrawAmount': '0.00000000'}],
'positions': [
{'symbol': 'EOSUSDT', 'initialMargin': '0', 'maintMargin': '0', 'unrealizedProfit': '0.00000000', 'positionInitialMargin': '0', 'openOrderInitialMargin': '0', 'leverage': '10', 'isolated': False, 'entryPrice': '0.0000', 'maxNotional': '1000000', 'positionSide': 'BOTH'},
{'symbol': 'SUSHIUSDT', 'initialMargin': '0', 'maintMargin': '0', 'unrealizedProfit': '0.00000000', 'positionInitialMargin': '0', 'openOrderInitialMargin': '0', 'leverage': '20', 'isolated': False, 'entryPrice': '0.0000', 'maxNotional': '25000', 'positionSide': 'BOTH'}
]}
Комментарии:
1.
test['assets'][0]['walletBalance']
2. большое тебе спасибо, мой друг. это сработало, можете ли вы написать в качестве ответа? Давайте подтвердим
Ответ №1:
Обратите внимание, что может быть несколько asstes, поэтому перебирайте их:
for asset in json_data.get('assets', []):
print(asset.get('walletBalance'))
Ответ №2:
Вы можете использовать понимание списка
res = [x.get('walletBalance') for x in test['assets']]
print(res)
Вывод:
['32.51609961', '0.00000000']
Ответ №3:
Кажется, вы получаете словарь от вызова client.futures_account() . Если это так, дампы и загрузки не требуются. Вы можете просто сделать:
def account_balance(webhook_data):
account_data = client.futures_account()
return [x.get('walletBalance') for x in account_data['assets']]