如何正确输出JSON与应用程序引擎Python webapp2?

现在我正在做这个:

  self.response.headers ['Content-Type'] ='application / json'
 self.response.out.write('{“success”:“some var”,“payload”:“some var”}') 

有没有更好的方式来使用一些图书馆?

是的,你应该使用Python 2.7支持的json库 :

 import json self.response.headers['Content-Type'] = 'application/json' obj = { 'success': 'some var', 'payload': 'some var', } self.response.out.write(json.dumps(obj)) 

webapp2为json模块提供了一个方便的包装:它将使用simplejson(如果可用),或者使用Python> = 2.6的json模块(如果可用)以及作为App Engine上的django.utils.simplejson模块的最后一个资源。

http://webapp2.readthedocs.io/en/latest/api/webapp2_extras/json.html

 from webapp2_extras import json self.response.content_type = 'application/json' obj = { 'success': 'some var', 'payload': 'some var', } self.response.write(json.encode(obj)) 

python本身有一个json模块 ,它将确保你的JSON格式正确,手写的JSON更容易出错。

 import json self.response.headers['Content-Type'] = 'application/json' json.dump({"success":somevar,"payload":someothervar},self.response.out) 

我通常使用这样的:

 class JsonEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime): return obj.isoformat() elif isinstance(obj, ndb.Key): return obj.urlsafe() return json.JSONEncoder.default(self, obj) class BaseRequestHandler(webapp2.RequestHandler): def json_response(self, data, status=200): self.response.headers['Content-Type'] = 'application/json' self.response.status_int = status self.response.write(json.dumps(data, cls=JsonEncoder)) class APIHandler(BaseRequestHandler): def get_product(self): product = Product.get(id=1) if product: jpro = product.to_dict() self.json_response(jpro) else: self.json_response({'msg': 'product not found'}, status=404) 
 import json import webapp2 def jsonify(**kwargs): response = webapp2.Response(content_type="application/json") json.dump(kwargs, response.out) return response 

每个地方你想返回一个JSON响应…

 return jsonify(arg1='val1', arg2='val2') 

要么

 return jsonify({ 'arg1': 'val1', 'arg2': 'val2' })