2015-05-19 14 views
9

Nowość w MongoDb i Pythonie (webapp2). Tak więc, pobierałem dane z bazy danych mongodb. Ale nie mogłem użyć json.dumps dla zwróconych danych. Oto mój kod:Pymongo/bson: Konwertuj obiekt python.cursor.Cursor na szeregowalny/obiekt JSON

exchangedata = db.Stock_Master.find({"Country": "PHILIPPINES"}, {"_id" : 0})   
self.response.write(json.dumps(exchangedata)) 

to zgłasza błąd:

TypeError: pymongo.cursor.Cursor object at 0x7fcd51230290 is not JSON serializable 

Rodzaj exchangedata jest pymongo.cursor.Cursor. Jak mogę przekonwertować go na obiekt json?

+0

pokrewne: http://stackoverflow.com/questions/13241878/convert-pymongo-cursor-to-json. – alecxe

+0

Konwertuj kursor na listę obiektów: 'self.response.write (json.dumps (list (exchangedata)))' – Monkpit

+0

Mongo zwraca obiekt 'kursora' zamiast rzeczywistej' listy' danych. Konieczne będzie przekonwertowanie tego na 'list' najpierw, jak wspomniał Kyle. –

Odpowiedz

15

Zastosowanie zrzuca z bson.json_util:

>>> c = pymongo.MongoClient() 
>>> c.test.test.count() 
5 
>>> from bson.json_util import dumps 
>>> dumps(c.test.test.find()) 
'[{"_id": {"$oid": "555cb3a7fa5bd85b81d5a624"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a625"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a626"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a627"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a628"}}]' 
+0

Przepraszamy za późną odpowiedź, ale dzięki, że zadziałało! –