Ich habe eine Python-App erstellt, um eine JSON-API zu analysieren.
Es gibt 3 Endpunkte und 1 davon beunruhigt mich.
Der Endpunkt ist: http://coinmarketcap.northpole.ro/history.json?coin=PCNFehler beim Analysieren einer JSON
Mein Code:
def getHistory(self, coin):
endpoint = "history.json?year=2017&coin=PCN"
data = urllib2.urlopen(self.url + endpoint).read()
data = json.loads(data)['history']
return data
def getOrder(self):
for c in self.getCoinsList():
res = []
symbol = c['symbol']
price = self.getCoinPrice(symbol)
count = 0
count_days = len(self.getHistory(symbol))
for h in self.getHistory(symbol):
if h['price']['usd'] > price:
++count
percent_down = count_days/count * 100
line = {'symbol': symbol, 'price': price, 'percent_down': percent_down}
res.append(line)
return res
Wenn ich versuche, die h['price']['usd']
ich diese haben zu erhalten:
File "coinmarketcap.py", line 39, in getOrder
if h['price']['usd'] > price:
TypeError: string indices must be integers
Wenn ich print type(h)
tun es Unicode zurück.
Verwendung So haben Sie bestätigt, dass h eine Zeichenfolge ist und Der Fehler besagt, dass String-Indizes ganze Zahlen sein müssen. Sie versuchen, die Zeichenfolge mit anderen Zeichenfolgen zu indizieren. – SuperShoot
Aber ich möchte h ['price'] ['usd'] bekommen, wie kann ich das machen? – Pixel
Ich nehme an, 'getHistory' gibt ein dict zurück und du iterierst es so:' für h in self.getHistory (symbol) '. Dies gibt Ihnen das dict _keys_, nicht _values_. Versuchen Sie 'h in self.getHistory (Symbol) .values ()'. –