我对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。谢谢你的帮助。
答案 0 :(得分:18)
创建自己的JSON很愚蠢。请改为使用json
或simplejson
。
>>> 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)