【发布时间】:2012-08-05 17:47:32
【问题描述】:
所以我有大量来自 MongoDB 转储的 .bson。我在命令行上使用bsondump,将输出作为标准输入传送到python。这成功地从 BSON 转换为“JSON”,但它实际上是一个字符串,而且看起来不是合法的 JSON。
例如,输入线路如下所示:
{ "_id" : ObjectId( "4d9b642b832a4c4fb2000000" ),
"acted_at" : Date( 1302014955933 ),
"created_at" : Date( 1302014955933 ),
"updated_at" : Date( 1302014955933 ),
"_platform_id" : 3,
"guid" : 72106535190265857 }
我相信是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'>。
我也试过
json_line = json.dumps(line, default=json_util.default)
(请参阅 pymongo json_util - 垃圾邮件检测阻止第三个链接) 这似乎与上面的转储相同。加载给出错误:
json_line = json.loads(line, object_hook=json_util.object_hook)
ValueError: No JSON object could be decoded
那么,如何将 TenGen JSON 字符串转换为可解析的 JSON? (最终目标是将制表符分隔的数据流式传输到另一个数据库)
【问题讨论】:
-
你看过
bson吗? pypi.python.org/pypi/bson/0.3.2 -
除了删除 Mongo 依赖项之外还有什么作用吗?我不明白这怎么可能是我的问题,但我会再看一看。
-
我看到了那个并试图利用帮助。但是如果你注意到,他得到的字符串在 '_id' 前面有一个前面的 'u' 并且响应者指出它代表一个 python unicode 字符串
-
@boardrider 是吗?链接指向这个问题。