Parece que no puedo deserializar mi documento MongoDB JSON con el BSON json_util.No se puede deserializar PyMongo ObjectId de JSON
La función json.loads se está ahogando en la cadena ObjectId()
. Había entendido json_util capaz de manejar el formato ObjectId de MongoDB y transformarlo en JSON utilizable.
código Python:
import json
from bson import json_util
s = "{u'_id': ObjectId('4ed559abf047050c58000000')}"
u = json.loads(s, object_hook=json_util.object_hook)
consigo la excepción del decodificador:
...
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)
Me estoy perdiendo algo?
Bien, después de ver la sugerencia de @dcrosta para revisar MongoDB Extended JSON http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON, permítanme intentar convertir el data_oid del tipo TenGen BSON a Strict JSON , es decir, "$ oid". – jdev
La sugerencia de json.dumps funcionó perfectamente. s = json.dumps (u, default = json_util.default), output {"_id": {"$ oid": "4ed559abf047050c58000000"}}. Gracias @jdi – jdev
Hola a todos, también quiero convertir ObjectId() del resultado de mongo, intenté ejecutar el código anterior, recibo el siguiente error 'NameError: nombre global 'json_util' no está definido' es cualquier biblioteca que necesito ¿importar? , he importado la biblioteca 'bson', pero igual error –