Unable to deserialize PyMongo ObjectId from JSON
我似乎无法使用BSON json_util反序列化我的MongoDB JSON文档。
json.loads函数阻塞了
Python代码:
1 2 3 4 5 | import json from bson import json_util s ="{u'_id': ObjectId('4ed559abf047050c58000000')}" u = json.loads(s, object_hook=json_util.object_hook) |
我得到了解码器异常:
1 2 3 4 5 6 7 8 9 | ... 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) |
我想念什么吗?
我认为您的字符串形式实际上看起来像python表示形式...
1 2 3 4 5 6 7 8 | s = '{"_id": {"$oid":"4edebd262ae5e93b41000000"}}' u = json.loads(s, object_hook=json_util.object_hook) print u # Result: {u'_id': ObjectId('4edebd262ae5e93b41000000')} s = json.dumps(u, default=json_util.default) print s # Result: {"_id": {"$oid":"4edebd262ae5e93b41000000"}} |
对于实际的json字符串表示形式中存在ObjectId(),bson.json_util.object_hook函数似乎没有任何类型的处理。
这里有两个问题:
您要进行JSON解码的字符串不是JSON,而是Python字典的字符串表示形式。 特别是,问题是
有关如何正确使用