我想在其他讲JSON的程序中使用一些MongoDB命令的原始输出.当我在蒙戈shell中运行命令,他们代表扩展JSON,在"shell模式"领域,具有特殊的领域,如NumberLong,Date和Timestamp.我看引用文档中的"严格模式",但我看不出有什么办法把它的壳,或像运行命令的方式db.serverStatus()在事情做输出严格JSON一样mongodump.如何强制Mongo输出符合标准的JSON?
我似乎无法使用BSON json_util反序列化我的MongoDB JSON文档.
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)
Run Code Online (Sandbox Code Playgroud)
我得到解码器异常:
...
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)
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我想读取一个包含 ObjectId 和 ISODate 的 JSON 文件。
JSON 数据:
{
"_id" : ObjectId("5baca841d25ce14b7d3d017c"),
"country" : "in",
"state" : "",
"date" : ISODate("1902-01-31T00:00:00.000Z")
}
Run Code Online (Sandbox Code Playgroud)