我似乎無法反序列化我的MongoDB JSON文檔與BSON json_util。無法從JSON反序列化PyMongo ObjectId
json.loads函數在ObjectId()
字符串上窒息。我瞭解json_util能夠處理MongoDB的ObjectId格式並轉換成可用的JSON。
Python代碼:
import json
from bson import json_util
s = "{u'_id': ObjectId('4ed559abf047050c58000000')}"
u = json.loads(s, object_hook=json_util.object_hook)
我得到的解碼器例外:
...
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)
我缺少的東西?
好吧,在看過@ dcrosta的建議來查看MongoDB擴展JSON http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON,讓我來嘗試將來自TenGen BSON類型的data_oid轉換爲Strict JSON ,即「$ oid」。 – jdev
json.dumps建議完美運行。 s = json.dumps(u,default = json_util.default),output {「_id」:{「$ oid」:「4ed559abf047050c58000000」}}。謝謝@jdi – jdev
大家好,我也想收斂mongo結果的ObjectId(),我試圖執行上面的代碼,我得到以下錯誤'NameError:全局名'json_util'未定義'是我需要的任何庫導入? ,我已經導入'bson'庫,但仍然是同樣的錯誤 –