Не получается получить ответ в json
import requests
from requests.structures import CaseInsensitiveDict
import json
url = "https://api.zapper.fi/v2/balances?addresses%5B%5D=0x66a188b9662ca2cd259d1145fec21be988850c88&networks%5B%5D=ethereum&networks%5B%5D=polygon&bundled=false"
headers = CaseInsensitiveDict()
headers["Authorization"] = "Basic "
r = requests.get(url, headers=headers).json()
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Не знаю что делать. текст r:
event: balance data: {"appId":"tokens","network":"ethereum","addresses":["0x66a188b9662ca2cd259d1145fec21be988850c88"],"balance":{"deposits":{},"debt":{},"vesting":{},"wallet":{"2242939522":{"key":"2242939522","appId":"tokens","address":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","network":"ethereum","balanceUSD":3.628623,"metaType":"supplied","displayProps":{"label":"WETH","secondaryLabel":null,"tertiaryLabel":null,"images":[],"stats":[],"info":[{"label":{"type":"string","value":"App"},"value":{"type":"string","value":"Tokens"}}],"balanceDisplayMode":"default"},"type":"token","contractType":"app-token","context":{"symbol":"WETH","balance":0.00205,"decimals":18,"balanceRaw":"2050000000000000","price":1770.06},"breakdown":[]},"2616394601":{"key":"2616394601","appId":"tokens","address":"0x0000000000000000000000000000000000000000","network":"ethereum","balanceUSD":187.49212092750324,"metaType":"supplied","displayProps":{"label":"ETH","secondaryLabel":null,"tertiaryLabel":null,"images":[],"stats":[],"info":[{"label":{"type":"string","value":"App"},"value":{"type":"string","value":"Tokens"}}],"balanceDisplayMode":"default"},"type":"token","contractType":"app-token","context":{"symbol":"ETH","balance":0.10592416128690736,"decimals":18,"balanceRaw":"105924161286907352","price":1770.06},"breakdown":[]}},"claimable":{},"locked":{},"nft":{}},"totals":[{"key":"2242939522","type":"app-token","network":"ethereum","balanceUSD":3.628623},{"key":"2616394601","type":"app-token","network":"ethereum","balanceUSD":187.49212092750324}],"errors":[]}
event: balance data: {"appId":"tokens","network":"polygon","addresses":["0x66a188b9662ca2cd259d1145fec21be988850c88"],"balance":{"deposits":{},"debt":{},"vesting":{},"wallet":{},"claimable":{},"locked":{},"nft":{}},"totals":[],"errors":[]}
event: end data: {}
r.content =
b'event: balance\ndata: {"appId":"tokens","network":"ethereum","addresses":["0x66a188b9662ca2cd259d1145fec21be988850c88"],"balance":{"deposits":{},"debt":{},"vesting":{},"wallet":{"2242939522":{"key":"2242939522","appId":"tokens","address":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","network":"ethereum","balanceUSD":3.6338505000000003,"metaType":"supplied","displayProps":{"label":"WETH","secondaryLabel":null,"tertiaryLabel":null,"images":["https://storage.googleapis.com/zapper-fi-assets/tokens/ethereum/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png"],"stats":[],"info":[{"label":{"type":"string","value":"App"},"value":{"type":"string","value":"Tokens"}}],"balanceDisplayMode":"default"},"type":"token","contractType":"app-token","context":{"symbol":"WETH","balance":0.00205,"decimals":18,"balanceRaw":"2050000000000000","price":1772.61},"breakdown":[]},"2616394601":{"key":"2616394601","appId":"tokens","address":"0x0000000000000000000000000000000000000000","network":"ethereum","balanceUSD":187.76222753878486,"metaType":"supplied","displayProps":{"label":"ETH","secondaryLabel":null,"tertiaryLabel":null,"images":["https://storage.googleapis.com/zapper-fi-assets/tokens/ethereum/0x0000000000000000000000000000000000000000.png"],"stats":[],"info":[{"label":{"type":"string","value":"App"},"value":{"type":"string","value":"Tokens"}}],"balanceDisplayMode":"default"},"type":"token","contractType":"app-token","context":{"symbol":"ETH","balance":0.10592416128690736,"decimals":18,"balanceRaw":"105924161286907352","price":1772.61},"breakdown":[]}},"claimable":{},"locked":{},"nft":{}},"totals":[{"key":"2242939522","type":"app-token","network":"ethereum","balanceUSD":3.6338505000000003},{"key":"2616394601","type":"app-token","network":"ethereum","balanceUSD":187.76222753878486}],"errors":[]}\n\nevent: balance\ndata: {"appId":"tokens","network":"polygon","addresses":["0x66a188b9662ca2cd259d1145fec21be988850c88"],"balance":{"deposits":{},"debt":{},"vesting":{},"wallet":{},"claimable":{},"locked":{},"nft":{}},"totals":[],"errors":[]}\n\nevent: end\ndata: {}\n\n'
Ответы (3 шт):
import json
resp = r.text
lines = resp.split('\n')
target_json = None
for line in lines:
if line.find('data:') != -1:
target_json = json.loads(line.replace('data:', ''))
Замени все элементы которые стоят перед открытием json на пустоту и дальше уже загружай все в json
Что то по типу:
r = r.text
r = r.replace('event: balance data:', '')
r = json.loads(r)
Проверять правильность структуры json можешь здесь: http://jsonviewer.stack.hu/
Если тебе после нажатия на кнопку viewer не выдает ошибки, то значит и в коде данные загрузятся в json без проблем
r = r.text
qq =[json.loads(x.replace('balance data:', '')) for x in r.split('event: ')[1:-1]]
for lds in qq:
if lds['totals']:
print(lds["network"])
for bal in lds['totals']:
print(f" key {bal['key']} 'balanceUSD' {bal['balanceUSD']}")
ethereum
key 2242939522 'balanceUSD' 3.628623
key 2616394601 'balanceUSD' 187.49212092750324