Ich bin teilweise die Lage, mit json als Datei gespeichert arbeiten:convert json retrived von url
#! /usr/bin/python3
import json
from pprint import pprint
json_file='a.json'
json_data=open(json_file)
data = json.load(json_data)
json_data.close()
print(data[10])
Aber ich versuche, das gleiche von Daten direkt aus Web zu erreichen. Ich versuche, mit der akzeptierten Antwort here:
#! /usr/bin/python3
from urllib.request import urlopen
import json
from pprint import pprint
jsonget=urlopen("http://api.crossref.org/works?query.author=Rudra+Banerjee")
data = json.load(jsonget)
pprint(data)
, die mir Fehler geben:
Traceback (most recent call last):
File "i.py", line 10, in <module>
data = json.load(jsonget)
File "/usr/lib64/python3.5/json/__init__.py", line 268, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "/usr/lib64/python3.5/json/__init__.py", line 312, in loads
s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'
Was falsch ist hier los?
Ändern Sie den Code wie Par Charlie Antwort auf:
jsonget=str(urlopen("http://api.crossref.org/works?query.author=Rudra+Banerjee"))
data = json.load(jsonget)
pprint(jsonget)
bricht bei json.load
:
Traceback (most recent call last):
File "i.py", line 9, in <module>
data = json.load(jsonget)
File "/usr/lib64/python3.5/json/__init__.py", line 265, in load
return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
@alecxe Umwandlung: kann ich demütig gefragt, ob Sie den Code ran (seine minimal und vollständig), bevor das Duplikat was darauf hindeutet, und möglicherweise die enge Abstimmung ? – BaRud
Ich entschuldige mich, wenn es kein echtes Duplikat ist, aber es sieht wirklich so aus. Ich bin offen dafür, die Frage erneut zu beantworten, wenn Sie freundlicherweise erklären können, warum dies ein anderer Anwendungsfall ist. Vielen Dank. Was Ihr letztes Problem angeht, verwenden Sie 'json.loads()' und nicht 'json.load()', da Sie jetzt einen String haben. – alecxe
@alecxe: lädt auch fehlschlägt. Eigentlich habe ich deshalb den kompletten Code geladen und gefragt (demütig nochmal) ob du es wirklich ausgeführt hast. Wenn es ein mögliches Duplikat ist, bin ich damit einverstanden, es so zu markieren ... wir alle wollen so sauber. Aber das Problem sieht nicht direkt zu mir aus. aber dann habe ich keine Erfahrung im Umgang mit Json. – BaRud