2015-05-19 14 views
9

Nuovo in MongoDb e Python (webapp2). Quindi, stavo recuperando alcuni dati da un database mongodb. Ma non ero in grado di utilizzare json.dumps sui dati restituiti. Ecco il mio codice:Pymongo/bson: Converti l'oggetto python.cursor.Cursor nell'oggetto serializzabile/JSON

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

Questo genera un errore:

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

Il tipo di exchangedata è pymongo.cursor.Cursor. Come posso convertirlo in un oggetto JSON?

+0

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

+0

Converti il ​​cursore in un elenco di oggetti: 'self.response.write (json.dumps (list (exchangedata)))' – Monkpit

+0

Mongo restituisce un oggetto 'cursor' invece di un effettivo' elenco' di dati. Dovrai prima convertirlo in un 'elenco' come menzionato da Kyle. –

risposta

15

Usa discariche da 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

Scusate per la risposta in ritardo, ma grazie ha funzionato! –