我正在使用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数据存储区,我的问题是这似乎是存储和获取JSON字符串的正确方法,但在我将此设计模式提交给其他实体之前,我想看看这是一个好的模式,并且不会出现任何数据错误。具体来说,我需要在进出数据存储区的路上执行任何编码吗?
答案 0 :(得分:4)
您所看到的内容看起来不错,但也许您应该考虑使用自定义属性,例如:JsonProperty(1)或JsonProperty(2)。
这样就可以为您自动序列化/反序列化数据。
答案 1 :(得分:1)
在将“字符串”(您已将字典序列化为字符串)插入AppEngine数据存储区时,您不需要进行任何编码。
我尝试了以下代码,并从数据存储区检索时返回了完全相同的字符串。
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)