4

尝试在 Django 中序列化 MongoDB 游标

import json
from pymongo import json_util

results = json.dumps(results, default=json_util.default, separators=(',', ':'))

原来results是这样的

[{u'_id': ObjectId('4f7c0f34705ff8294a00006f'),
  u'identifier': u'1',
  u'items': [{u'amount': 9.99, u'name': u'PapayaWhip', u'quantity': 1}],
  u'location': None,
  u'timestamp': datetime.datetime(2012, 4, 4, 10, 7, 0, 596000),
  u'total': 141.25}]

编辑:通过使用类似的东西获得

from django.db import connections

connection = connections['default']

results = connection.get_collection('papayas_papaya')
results = results.find({
    'identifier': '1',
})

给我

TypeError: <django_mongodb_engine.utils.DebugCursor object> is not JSON serializable

有谁知道我做错了什么?

使用json_util应该序列化 MongoDB文档,也许我的问题是我正在尝试对游标进行序列化。(如何从光标中获取文档?一个简单的元组“cast”?)

干杯!

4

2 回答 2

5

您是否尝试仅序列化一条数据?如果是这样,只需更改

results = results.find({
    'identifier': '1',
})

results = results.find_one({
    'identifier': '1',
})

(虽然你真的应该区分你的结果和代表你的集合的变量。)

如果您尝试序列化多条数据,您可以保留find然后遍历游标并序列化每条数据。

serialized_results = [json.dumps(result, default=json_util.default, separators=(',', ':')) for result in results]
于 2012-04-16T11:16:50.150 回答
0

你真的应该使用 Django 的序列化系统,或者至少是一个可插入的 JSON 序列化应用程序。

于 2012-04-16T18:37:51.243 回答