Ik krijg deze fout in Python 3.5.1.
json.decoder.JSONDecodeError: Verwachte waarde: regel 1 kolom 1 (char 0)
Hier is mijn code:
import json
import urllib.request
connection = urllib.request.urlopen('http://python-data.dr-chuck.net/comments_220996.json')
js = connection.read()
print(js)
info = json.loads(str(js))
Antwoord 1, autoriteit 100%
Als je kijkt naar de uitvoer die je ontvangt van print()
en ook in je Traceback, dan zie je dat de waarde die je terugkrijgt geen string is, maar een bytes-object (voorafgegaan door b
):
b'{\n "note":"This file .....
Als u de URL ophaalt met een tool zoals curl -v
, ziet u dat het inhoudstype is
Content-Type: application/json; charset=utf-8
Dus het is JSON, gecodeerd als UTF-8, en Python beschouwt het als een bytestream, niet als een simpele string. Om dit te ontleden, moet je het eerst in een string converteren.
Verander de laatste regel code in dit:
info = json.loads(js.decode("utf-8"))
Antwoord 2, autoriteit 10%
in mijn geval kunnen sommige tekens zoals ” , :”‘{}[] ” het JSON-formaat beschadigen, dus gebruik probeer json.loads(str) behalveom uw invoer te controleren