如何正确输出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' })
- 如何删除Google Application Engine中未使用的索引?
- 如何使用Google App Enginepipe理第三方Python库? (virtualenv?pip?)
- java.lang.IncompatibleClassChangeError:实现类部署到应用程序引擎
- 如何unit testingGoogle Cloud Endpoints
- 如何在AppEngine上托pipe静态HTML文件?
- Google App Engine Java上的RESTful应用程序?
- Google App Engine作为制作平台
- 我们的war / WEB-INF文件夹中的资源文件path?
- 频道API存在不触发