JSONDecodeError: Verwachte waarde: regel 1 kolom 1

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

Other episodes