Verschiedene Fehler beim Parsen von JSON in Python
Versucht zu Parsen von json von einer url erfordert login. Darunter alle meine hier den code wie ich bin nicht sicher, wo der Fehler ist.
try: import simplejson as json
except ImportError: import json
import urllib2
username = 'user'
password = '1234'
url = "https://www.blah.com/someplace"
# set up the username/password/url request
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, "https://www.blah.com", username, password)
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
request = urllib2.Request(url)
response = opener.open(request)
# option 1
json_object = json.loads(str(response))
#option 2
json_object = json.loads(response)
Wenn ich den code ausführen mit der option 1 (auskommentieren der option 2), bekomme ich diesen Fehler:
Traceback (most recent call last):
File "jsontest.py", line 22, in <module>
json_object = json.loads(str(request))
File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line 413, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 402, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 420, in raw_decode
raise JSONDecodeError("No JSON object could be decoded", s, idx)
simplejson.decoder.JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0)
Wenn ich option 2:
Traceback (most recent call last):
File "jsontest.py", line 23, in <module>
json_object = json.loads(request)
File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line 413, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 402, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
Mein Beispiel-JSON-gültig ist, so weit ich erzählen kann:
{"set1":[{"data1":"411","data2":"2033","data3":"1","data4":"43968077","data5":"217","data6":"106828","data7":[]}],
"set2":{"data8":"411","data9":"2033","data10":"43968077","data11":"217223360","data12":"106828"}}
simplejson version = 2.3.2,
Python-2.7.3
Sehr neu auf all dies, so dass alle Zeiger wäre sehr hilfreich.
warum versuchen Sie zum Lesen der request-Objekt? Wollen Sie nicht die Antwort? Antwort = opener.open(req);Daten = Antwort.read()
Nicht du meinst
Ugh. Ja ich meinte Antwort. Bearbeitet.
Nicht du meinst
json_object = json.loads(response)
? (nicht request
?) Nur ein Tippfehler?Ugh. Ja ich meinte Antwort. Bearbeitet.
InformationsquelleAutor acpigeon | 2012-09-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie wollen entschlüsseln, die Antwort, nicht die Anfrage:
Die Antwort ist ein file-ähnliches Objekt verwenden, so können Sie
.load()
haben die json-Bibliothek-Lesen Sie es direkt.Alternativ (auf Kosten von einigen temporären Speicher zu verwenden), verwenden Sie das
.loads()
Funktion mit der vollständig Lesen Antwort:Beachten Sie, dass python 2.7 enthält bereits die simplejson-Bibliothek umbenannt
json
:InformationsquelleAutor Martijn Pieters
Müssen Sie mit der Antwort, nicht verlangen, (vielleicht nur ein Tippfehler?), aber darüber hinaus müssen Sie
response.read()
um den Körper der HTTP-Antwort:InformationsquelleAutor ron rothman