Generating json in python for app engine

2019-04-06 00:17发布

I am somewhat new to python and I am wondering what the best way is to generate json in a loop. I could just mash a bunch of strings together in the loop, but I'm sure there is a better way. Here's some more specifics. I am using app engine in python to create a service that returns json as a response.

So as an example, let's say someone requests a list of user records from the service. After the service queries for the records, it needs to return json for each record it found. Maybe something like this:

{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 } }, 
}

Excuse my poorly formatted json. Thanks for your help.

3条回答
做自己的国王
2楼-- · 2019-04-06 00:42

Few steps here.

First import simplejson

from django.utils import simplejson

Then create a function that will return json with the appropriate data header.

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

Then from within your post or get handler, create a python dictionary with the desired data and pass that into the function you created.

 ret = {"records":{
   "record": {"name": "bob", ...}
   ...
 }
 write_json(self, ret)
查看更多
Fickle 薄情
3楼-- · 2019-04-06 00:44

Creating your own JSON is silly. Use json or simplejson for this instead.

>>> json.dumps(dict(foo=42))
'{"foo": 42}'
查看更多
Evening l夕情丶
4楼-- · 2019-04-06 00:54

My question is how do I add to the dictionary dynamically? So foreach record in my list of records, add a record to the dictionary.

You may be looking to create a list of dictionaries.

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

Then in app engine, use the code above to export records as json.

查看更多
登录 后发表回答