Tôi dường như không thể deserialize tài liệu JSON MongoDB của tôi với BSON json_util.Không thể deserialize PyMongo ObjectId từ JSON
Hàm json.loads bị nghẹt thở trên chuỗi ObjectId()
. Tôi đã hiểu json_util có khả năng xử lý định dạng ObjectId của MongoDB và chuyển đổi thành JSON có thể sử dụng được.
mã Python:
import json
from bson import json_util
s = "{u'_id': ObjectId('4ed559abf047050c58000000')}"
u = json.loads(s, object_hook=json_util.object_hook)
tôi nhận được ngoại lệ giải mã:
...
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)
Tôi có thiếu cái gì?
Ok, sau khi xem gợi ý @ dcrosta để xem xét MongoDB Mở rộng JSON http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON, hãy để tôi thay vì thử chuyển đổi data_oid từ loại BSG TenGen thành JSON chuẩn , tức là "$ oid". – jdev
Đề xuất json.dumps hoạt động hoàn hảo. s = json.dumps (u, default = json_util.default), output {"_id": {"$ oid": "4ed559abf047050c58000000"}}. Cảm ơn @jdi – jdev
Hi All, tôi cũng muốn conver ObjectId() của kết quả mongo, tôi đã cố gắng để thực hiện trên mã, tôi nhận được lỗi sau 'NameError: tên toàn cầu 'json_util' không được định nghĩa' là bất kỳ thư viện tôi cần nhập khẩu? , tôi đã nhập thư viện 'bson' nhưng vẫn lỗi tương tự –