json - Python query objects are not serializable -


when tried encode query objects following error:

  file "c:\program file\python27\lib\json\encoder.py", line 264, in iterencode         return _iterencode(o, 0)       file "c:\program file\python27\lib\json\encoder.py", line 178, in default         raise typeerror(repr(o) + " not json serializable")     typeerror: activitysummaries(key=key('activitysummaries', 634), activated_users=0, broker_approved=0, broker_registered=0, broker_searched=1, closed_deals=0, company_registered=0, company_searched=4, deal_appoved=0, investor_approved=0, investor_registered=0, investor_searched=3, registered_users=0, timestamp=datetime.datetime(2013, 4, 8, 20, 41, 47, 574000), watchlisting=0) not json serializable 

jquery:

$.ajax({         data: somedata,         url: someurl,         type: 'post',         datatype: 'json',         success: function(data)         {             alert("success");         },         error : function(request, status, thrownerror){             alert("error");             return;                 }     }); 

handler:

 search_pattern = roledb.activitysummaries.searchpatterns(start_date, end_date)              self.response.write(json.dumps(search_pattern)) 

roledb.py

class activitysummaries(ndb.model):         def searchpatterns(cls, start_date, end_date):             activities = cls.query()             results = []             activity in activities:                 if ( activity.timestamp >= start_date , activity.timestamp <= end_date ):                     results.append(activity)              return results 

i'm new google app engine , have no idea why cannot serializable using json.

any inputs heartily appreciated.

you can serialize "simple" data types in python, dictionaries, arrays etc. should serialize not query object, result of query—i guess it'll array.

another solution subclass jsonencoder handle arbitrary values, snippet did datetime:

import datetime json import jsonencoder  class dateencoder(jsonencoder):     def default(self, obj):         if isinstance(obj, datetime.date):             return obj.isoformat()         return jsonencoder.default(self, obj) 

and use specify cls=dateencoder:

json.dumps(data, cls=dateencoder) 

Comments

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -