我看过很多关于在pymongo中进行MongoDB查询后返回的bson文件转换为json的帖子。
就我而言,我从MongoDB中存储的Cuckoo分析结果中获取了一个文档。我可以访问并打印该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&#39;摘要&#39;:{u&#39; files&#39;:.....}}
Traceback(最近一次调用最后一次):文件 &#34; C:/Users/itisnobody/PycharmProjects/mongo-cuckoo/mongodb-cuckoo.py" ;, 第42行,在 print doc_json [&#34; behavior&#34;] TypeError:字符串索引必须是整数,而不是str
答案 0 :(得分:1)
bson.json_util.dumps
将您的文档转换为JSON 字符串(转储是&#34的缩写;转储字符串&#34;)。
您似乎正在尝试创建&#34; JSON dict&#34;,但您的文档(doc
)就是这样。我的猜测是,您可以完全跳过dumps
并直接与doc
合作。