j'utiliser ce code pour définir ma classe en GAE Python:simplejson + GAE sérialisent objets avec des champs noms
class Pair(db.Model):
find = db.StringProperty()
replace = db.StringProperty()
rule = db.StringProperty()
tags = db.StringListProperty()
created = db.DateTimeProperty()
updated = db.DateTimeProperty(auto_now=True)
Puis-je utiliser ce code pour sérialiser objets de cette classe avec simplejson:
class PairEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Pair):
return [str(obj.created), str(obj.updated), obj.find, obj.replace, obj.tags, obj.rule]
Enfin, j'utiliser ce code pour produire le résultat que la réponse:
pairsquery = GqlQuery("SELECT * FROM Pair")
pairs = pairsquery.fetch(1000)
pairsList = []
for pair in pairs:
pairsList.append(json.dumps(pair, cls=PairEncoder))
serialized = json.dumps({
'pairs': pairsList,
'count': pairsquery.count()
})
self.response.out.write(serialized)
Voici un exemple de résultat I obtenir:
{"count": 2, "pairs": ["[\"2010-12-06 12:32:48.140000\", \"2010-12-06 12:32:48.140000\", \"random string\", \"replacement\", [\"ort\", \"common\", \"movies\"], \"remove\"]", "[\"2010-12-06 12:37:07.765000\", \"2010-12-06 12:37:07.765000\", \"random string\", \"replacement\", [\"ort\", \"common\", \"movies\"], \"remove\"]"]}
Tout semble être bien, sauf une chose - je besoin des champs dans la réponse à des noms de la classe paire, donc il n'y aura pas seulement des valeurs, mais les noms des champs correspondants aussi . Comment puis je faire ça?
Créez un dict pour la paire au lieu de le coder json. – kevpie