当前位置: 首页 > 知识库问答 >
问题:

通过pymongo从MongoDB获取bson文档并转换为json后,访问json对象字段时出错

韩弘阔
2023-03-14

我看过很多关于从pymongo中MongoDB查询后返回的bson文档转换为json的帖子。

在我的例子中,我从MongoDB中存储的布谷鸟分析结果中获取一个文档。我可以访问并打印bson文档中的特定字段。但是,在从bson使用json_util将其转换为json并尝试访问同一字段后,我得到了一个错误。还有什么事要做?

下面是代码:

from pymongo import MongoClient
from bson.json_util import dumps, default

<...pymongo code for connecting to MongoDB server...>

result_cursor = analysis.find({"info.id": 1770}, {"behavior.summary": 1})
for doc in result_cursor:
    print doc["behavior"]
    doc_json = dumps(doc, default=default)
    print doc_json["behavior"]

从上面的代码来看,第一次打印工作正常,但是最后一次触发了一个异常,因为我认为它将对象视为一个列表而不是字典:

{u'summary':{u'files':…}

回溯(最近一次调用):文件“C:/Users/itisnobody/PycharmProjects/mongo-buckoo/mongodb-buckoo.py”,第42行,在print doc_json[“behavior”]TypeError中:字符串索引必须是整数,而不是str

共有1个答案

周墨一
2023-03-14

bson。json_util。dumps将文档转换为JSON字符串(dumps是“dump string”的缩写)。

看起来您正试图创建一个“JSON dict”,但您的文档(doc)正是这样。我的猜测是,您可以完全跳过转储,直接使用doc

 类似资料:
  • 问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答

  • 问题内容: 我有从外部应用程序获取数据的Java应用程序。传入的JSON以字符串形式。我想解析该Strings并创建BSON对象。 不幸的是,我在Java的BSON实现中找不到用于此的API。 我是否像GSON这样使用了外部解析器? 问题答案: 最简单的方法似乎是使用JSON库将JSON字符串解析为,然后使用方法将这些值放入。

  • 在我的Spring Boot/Spring Data MongoDB项目中,我有以下POJO: 其中: 是一个复合对象数组,例如: 我做错了什么?如何调整代码,以便在包含数据的情况下,通过正确查找文档。 更新 这是一个示例文档,我将使用它作为键(在UI上选择的每个用户每次该文档中的信息都不同):

  • 我在MongoDB中使用Java驱动程序3.0,以便通过Web服务发送JSON。 当我想将文档对象(org.bson.文档)转换为JSON时,我使用,当我想将JSON转换为文档对象时,我使用。 但是,当我处理文档列表时(如JSON中所示:

  • 我知道这是一个相当普遍的问题。我正在编写一个小的Flask应用程序,并试图将一些查询反馈给视图。我已经连接到我的本地MongoDB设置,并进行了成功的查询——但我无法使用它生成json对象 我见过的最常见的解决方案是从pymongo导入json_util,即。 我已经安装pymongo到我的烧瓶虚拟环境使用pip i. e: 在运行上述代码时,我不断遇到以下错误: 我可以在pymongo-2.3-

  • 我有以下代码将csv文件创建为字节数组: 上面返回的是来自java包的字节[]。nio。文件 。 然而,现在我需要从api返回一个Json对象,而不是一个字节数组。 代码中的所有其他逻辑应该保持不变。我能做到这一点的最简单方法是什么?