Vì vậy, tôi có một số lượng rất lớn .bson từ một bãi chứa MongoDB. Tôi đang sử dụng bsondump trên dòng lệnh, đường ống đầu ra như stdin để python. Điều này chuyển đổi thành công từ BSON thành 'JSON' nhưng thực tế nó là một chuỗi và dường như không phải là JSON hợp pháp.Làm thế nào tôi có thể sử dụng Python để chuyển bsondump của MongoDB thành JSON?
Ví dụ một dòng đến trông như thế này:
{ "_id" : ObjectId("4d9b642b832a4c4fb2000000"),
"acted_at" : Date(1302014955933),
"created_at" : Date(1302014955933),
"updated_at" : Date(1302014955933),
"_platform_id" : 3,
"guid" : 72106535190265857 }
Mà I belive là Mongo Extended JSON.
Khi tôi đọc trong một dòng như vậy và làm:
json_line = json.dumps(line)
tôi nhận được:
"{ \"_id\" : ObjectId(\"4d9b642b832a4c4fb2000000\"),
\"acted_at\" : Date(1302014955933),
\"created_at\" : Date(1302014955933),
\"updated_at\" : Date(1302014955933),
\"_platform_id\" : 3,
\"guid\" : 72106535190265857 }\n"
nào vẫn là <type 'str'>
.
Tôi cũng đã cố gắng
json_line = json.dumps(line, default=json_util.default)
(thấy pymongo json_util - phát hiện spam ngăn chặn một liên kết ba) Mà dường như để sản xuất các giống như bãi trên. tải cho một lỗi:
json_line = json.loads(line, object_hook=json_util.object_hook)
ValueError: No JSON object could be decoded
Vì vậy, làm cách nào tôi có thể chuyển chuỗi JSON của TenGen thành JSON phân tích cú pháp? (mục tiêu cuối cùng là truyền dữ liệu được phân tách bằng tab sang cơ sở dữ liệu khác)
Các bạn đã nhìn 'bson'? http://pypi.python.org/pypi/bson/0.3.2 –
Điều đó có làm được gì khác ngoài việc loại bỏ sự phụ thuộc Mongo không? Tôi không hiểu làm thế nào mà có thể là vấn đề của tôi, nhưng tôi sẽ xem xét nó một số chi tiết. –
có thể trùng lặp của [Không thể deserialize PyMongo ObjectId từ JSON] (http://stackoverflow.com/questions/8409194/unable-to-deserialize-pymongo-objectid-from-json) –