【问题标题】:Create JSON file from MongoDB document using Python使用 Python 从 MongoDB 文档创建 JSON 文件
【发布时间】:2017-05-18 20:42:51
【问题描述】:

我正在使用 MongoDB 3.4 和 Python 2.7。我从数据库中检索了一个文档,我可以打印它,结构表明它是一个 Python 字典。我想将此文档的内容写成 JSON 文件。当我创建像d = {"one": 1, "two": 2} 这样的简单字典时,我可以使用json.dump(d, open("text.txt", 'w')) 将其写入文件 但是,如果我将上述代码中的 d 替换为从 MongoDB 检索的文档,则会收到错误

ObjectId 不是 JSON 可序列化的

建议?

【问题讨论】:

    标签: json mongodb python-2.7


    【解决方案1】:

    正如您所发现的,问题在于_id 的值在ObjectId 中。

    要序列化的默认 json 编码器不理解 ObjectId 的类定义。对于默认 JSONEncoder 不理解的任何 Python 对象,您应该会收到类似的错误。

    另一种方法是编写您自己的自定义编码器来序列化ObjectId。但是,您应该避免发明轮子并使用提供的PyMongo/bson 实用方法bson.json_util

    例如:

    from bson import json_util 
    import json 
    
    json.dump(json_util.dumps(d), open("text.json", "w"))
    

    【讨论】:

    • 谢谢。效果很好。
    【解决方案2】:

    问题在于“_id”实际上是一个对象,而不是本机反序列化的。通过将 _id 替换为 mydocument['_id'] ='123 中的字符串来解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 2019-05-08
      • 2023-04-04
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 2022-11-10
      相关资源
      最近更新 更多