Как правильно сохранить и извлечь JSON из Datastore? - PullRequest
0 голосов
/ 26 февраля 2011

Я использую Google App Engine и Python.

class Spam(db.Model)
  eggs = db.TextProperty

# Create some json and store it to a Spam Entity
eggs_dict = {"large":10, "medium":5, "small":24}
eggs_json = simplejson.dumps(eggs)
spam = Spam(eggs=db.Text(eggs_json))

# Later, fetch spam and then return the json as part of a Response
self.response.out.write(spam.eggs)

Когда я делаю это, я получаю ответ, который выглядит следующим образом:

{"large":"10","medium":"5","small":"24"}

Это мой первый раз, когда я работаю с JSON + Python + GAE Datastore, и мой вопрос заключается в том, что, похоже, это правильный способ хранения и выборки строк JSON, но прежде чем я передам этот шаблон проектирования другим сущностям, я хотел Посмотрите, является ли это хорошим шаблоном и не склонен ли к ошибкам данных в будущем. В частности, нужно ли выполнять кодирование при входе или выходе из хранилища данных?

Ответы [ 2 ]

4 голосов
/ 26 февраля 2011

То, что у вас есть, выглядит хорошо, но, возможно, вам стоит использовать собственное свойство, например: JsonProperty (1) или JsonProperty (2) .

Таким образом, данные автоматически сериализуются / десериализуются для вас.

1 голос
/ 26 февраля 2011

При вставке «строки» (вы сериализовали свой словарь в строку) вам не нужно кодировать.

Я попробовал следующий код и получил ту же самую строку при получении из хранилища данных.

eggs_dict = {"large":10, "medium":5, "small":24}
eggs_json = simplejson.dumps(eggs_dict)
spam = Spam(key_name='blah')
spam.eggs = eggs_dict
db.put(spam.eggs)        

new_spam = db.get(db.Key.from_path('Spam', 'blah'))

# Later, fetch spam and then return the json as part of a Response
self.response.out.write(new_spam.eggs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...