Как JSON кодировать сущности? - PullRequest
0 голосов
/ 23 марта 2011

Я начинаю работать с Google App Engine.Я хочу сделать чат AJAX похожим на Twitter.

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

Сервер JSON кодирует ответ,

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

Результат: Здравствуйте!

Это нормально.Но замените 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))

Результат: ошибка.Сервер недоступен (получить)

Как я могу JSON кодировать сущности?

Ответы [ 4 ]

3 голосов
/ 23 марта 2011

В App Engine Python вы можете использовать этот скрипт для кодирования db.Models в JSON. Возможно, вам придется настроить некоторые части, например форматирование DateTime.

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

1 голос
/ 23 марта 2011

Вы не можете использовать simplejson.dumps () для списка элементов db.Model напрямую.

См. Мой ответ о расширении db.Model с некоторыми удобными методами для сериализации db.Модель экземпляров

0 голосов
/ 23 марта 2011

Проверьте журнал ошибок для движка приложения.Он скажет вам, какую ошибку он испытывает.Возможно, вы пытаетесь закодировать тип Python, с которым json не знаком.JSON будет делать только простые вещи, такие как списки и словари.Вы не можете использовать его для сложных, пользовательских типов.

0 голосов
/ 23 марта 2011

Я использую гсон для GAE / J.Вы можете дать ему объект (или, в вашем случае, извлечь материал из набора результатов) и получить строку JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...