¿Cómo JSON codificar entidades?

Estoy empezando con Google App Engine. Quiero hacer el chat de AJAX como Twitter.

class ChatMessage(db.Model): message = db.StringProperty() created = db.DateTimeProperty(auto_now=True) 

El servidor JSON codifica la respuesta,

 class RPCHandler(webapp.RequestHandler): def get(self): chat_list = {'message':'Hello!'} self.response.out.write(simplejson.dumps(chat_list)) 

Resultado: ¡Hola!

Esto esta bien. Pero reemplace RPCHandler

 class RPCHandler(webapp.RequestHandler): def get(self): newchat = ChatMessage(message="Hi!") newchat.put() que = db.Query(ChatMessage).order('-created') chat_list = que.fetch(limit=1) self.response.out.write(simplejson.dumps(chat_list)) 

Resultado: Error. El servidor no es accesible (obtener)

¿Cómo puedo JSON codificar Entidades?

En App Engine Python puede usar este script para codificar db.Models to JSON. Es posible que tenga que personalizar algunas partes, como el formato de DateTime.

http://code.google.com/p/google-app-engine-samples/source/browse/trunk/geochat/json.py?r=55

No puede usar simplejson.dumps () en una lista de elementos db.Model directamente.

Vea mi respuesta para ampliar db.Model con algunos métodos prácticos para serializar instancias de db.Model

Yo uso gson para GAE / J. Puede asignarle un objeto (o, en su caso, extraer material de un conjunto de resultados) y obtener una cadena JSON.

Compruebe el registro de errores para el motor de la aplicación. Te dirá qué error está experimentando. Probablemente estás tratando de codificar un tipo de Python con el que no está familiarizado. JSON solo hará cosas simples como listas y diccionarios. No puedes usarlo para tipos complejos y personalizados.