Nicht Deserialisieren PyMongo ObjectId aus JSON
Ich bin scheinbar nicht in der Lage zu Deserialisieren meine MongoDB JSON-Dokument mit dem BSON -json_util.
Json.Lasten-Funktion ist erstickt an der ObjectId()
string. Ich hatte verstanden json_util in der Lage Umgang mit MongoDB die ObjectId-format und die Umwandlung in nutzbare JSON.
Python-code:
import json
from bson import json_util
s = "{u'_id': ObjectId('4ed559abf047050c58000000')}"
u = json.loads(s, object_hook=json_util.object_hook)
Bekomme ich die decoder Ausnahme:
...
u = json.loads(s, object_hook=json_util.object_hook)
File "\python27\lib\json\__init__.py", line 339, in loads
return cls(encoding=encoding, **kw).decode(s)
File "\python27\lib\json\decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "\python27\lib\json\decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 1 (char 1)
Bin ich etwas fehlt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Ihr string-form tatsächlich aussieht wie die python-Vertretung...
Den bson.json_util.object_hook Funktion nicht scheinen, um jede Art von Behandlung für dort ObjectId() in der eigentlichen json-string.
NameError: global name 'json_util' is not defined
ist jede Bibliothek, die ich importieren zu müssen? habe ich importiertbson
Bibliothek, aber immer noch die gleiche Fehlermeldungbson.json_util.default
ist immer noch da. problem früher mit falschen import, jetzt habe ich importiert richtigen Bibliothek, die oben genannten Fehler ist Weg, aber immer noch Ergebnis wird nicht konvertiert. Können Sie helfen, was falsch gelaufen istGibt es zwei Probleme hier:
Den string, den Sie versuchen zu JSON-Dekodierung ist nicht JSON, es ist die string-Repräsentation eines Python dictionary. Insbesondere das problem ist, dass
u'_id'
ist nicht ein gültiges JSON-Schlüssel (JSON-Schlüssel sind Zeichenketten in Anführungszeichen; das "u" kennzeichnet hier ein Python-unicode-string, was ist sinnlos in JSON)json_util.object_hook
nichtObjectId
zur Verfügung JSON; diejson
Modul decodieren des JSON, und rufen Sie dann dieobject_hook
Rückruf mit jedem Objekt decodiert.json_util.object_hook
suchen nach bestimmten mustern, wie definiert in den strict-Modus von MongoDB JSON Erweitert.Siehe @jdi Antwort für Beispiele, wie Sie richtig zu nutzen
json_util
.