तो मेरे पास एक मोंगो डीबी डंप से .bson की एक बड़ी मात्रा है। मैं कमांड लाइन पर bsondump का उपयोग कर रहा हूं, आउटपुट को पायदान के लिए stdin के रूप में पाइप कर रहा हूं। यह सफलतापूर्वक बीएसओएन से 'JSON' में परिवर्तित हो जाता है लेकिन वास्तव में यह एक स्ट्रिंग है, और प्रतीत होता है कि कानूनी JSON नहीं है।मैं मोंडो डीबी के बांडडम्प को जेएसओएन में बदलने के लिए पायथन का उपयोग कैसे कर सकता हूं?
उदाहरण के लिए एक इनकमिंग लाइन इस तरह दिखता है:
{ "_id" : ObjectId("4d9b642b832a4c4fb2000000"),
"acted_at" : Date(1302014955933),
"created_at" : Date(1302014955933),
"updated_at" : Date(1302014955933),
"_platform_id" : 3,
"guid" : 72106535190265857 }
कौन सा मैं belive Mongo Extended JSON है।
जब मैं इस तरह के एक लाइन में पढ़ सकते हैं और कार्य करें:
json_line = json.dumps(line)
मैं:
"{ \"_id\" : ObjectId(\"4d9b642b832a4c4fb2000000\"),
\"acted_at\" : Date(1302014955933),
\"created_at\" : Date(1302014955933),
\"updated_at\" : Date(1302014955933),
\"_platform_id\" : 3,
\"guid\" : 72106535190265857 }\n"
अब भी है कौन सा <type 'str'>
। (देखें pymongo json_util - अनचाहा जाँच एक तिहाई लिंक को रोकती है)
मैं भी
json_line = json.dumps(line, default=json_util.default)
की कोशिश की है कौन सा उत्पादन करने लगता है एक ही जैसा कि ऊपर उदासीनता। भार एक त्रुटि देता है:
json_line = json.loads(line, object_hook=json_util.object_hook)
ValueError: No JSON object could be decoded
तो, मैं टेनजेन JSON की स्ट्रिंग को दृष्टांत जेएसओएन में कैसे बदल सकता हूं? (अंतिम लक्ष्य टैब से अलग डेटा को किसी अन्य डेटाबेस में स्ट्रीम करना है)
आप 'bson' को देखा है? http://pypi.python.org/pypi/bson/0.3.2 –
क्या यह मोंगो निर्भरता को हटाने के अलावा कुछ और करता है? मुझे समझ में नहीं आता कि यह मेरा मुद्दा कैसे हो सकता है, लेकिन मैं इसे और अधिक देखूंगा। –
संभावित डुप्लिकेट [JSON से PyMongo ऑब्जेक्ट आईडी को deserialize करने में असमर्थ] (http://stackoverflow.com/questions/8409194/unable-to-deserialize-pymongo-objectid-from-json) –