在python中为app引擎生成json

时间:2011-05-03 15:48:40

标签: python json google-app-engine

我对python有些新手,我想知道在循环中生成json的最佳方法是什么。我可以在循环中将一堆字符串混合在一起,但我确信有更好的方法。这里有一些更具体的细节。我在python中使用app引擎来创建一个返回json作为响应的服务。

举个例子,假设有人从服务中请求用户记录列表。服务查询记录后,需要为找到的每条记录返回json。也许是这样的:

{records: 
{record: { name:bob, email:blah@blah.com, age:25 } },
{record: { name:steve, email:blah@blahblah.com, age:30 } }, 
{record: { name:jimmy, email:blah@b.com, age:31 } }, 
}

请原谅我格式不佳的json。谢谢你的帮助。

3 个答案:

答案 0 :(得分:18)

创建自己的JSON很愚蠢。请改为使用jsonsimplejson

>>> json.dumps(dict(foo=42))
'{"foo": 42}'

答案 1 :(得分:7)

  

我的问题是如何添加到   字典动态?所以foreach   记录在我的记录列表中,添加一个   记录到字典。

您可能希望创建一个词典列表。

records = []
record1 = {"name":"Bob", "email":"bob@email.com"}
records.append(record1)    
record2 = {"name":"Bob2", "email":"bob2@email.com"}
records.append(record2)

然后在app引擎中,使用上面的代码将records导出为json。

答案 2 :(得分:4)

这里几步。

首先导入simplejson

from django.utils import simplejson

然后创建一个函数,它将返回带有相应数据头的json。

def write_json(self, data):
  self.response.headers['Content-Type'] = 'application/json'
  self.response.out.write(simplejson.dumps(data))

然后从你的帖子或获取处理程序中,创建一个包含所需数据的python字典,并将其传递给你创建的函数。

 ret = {"records":{
   "record": {"name": "bob", ...}
   ...
 }
 write_json(self, ret)