在Python中为应用引擎生成JSON
我对Python还不是很熟悉,想知道在循环中生成JSON的最佳方法是什么。我可以在循环中把一堆字符串拼在一起,但我相信还有更好的方法。下面是一些具体的情况。我正在使用Python的App Engine来创建一个服务,这个服务会返回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 个回答
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))
然后,在你的post或get处理函数里,创建一个Python字典,里面放入你想要的数据,然后把这个字典传递给你刚才创建的函数。
ret = {"records":{
"record": {"name": "bob", ...}
...
}
write_json(self, ret)
18
自己手动创建JSON格式的数据其实没必要。你可以直接使用 json
或者 simplejson
这些工具来帮你完成这个工作。
>>> json.dumps(dict(foo=42))
'{"foo": 42}'
7
我想问的是,怎么才能动态地往字典里添加内容?也就是说,对于我记录列表中的每一条记录,都要往字典里加一条记录。
你可能是想创建一个字典的列表。
records = []
record1 = {"name":"Bob", "email":"bob@email.com"}
records.append(record1)
record2 = {"name":"Bob2", "email":"bob2@email.com"}
records.append(record2)
然后在应用引擎中,使用上面的代码把 records
导出为 json 格式。