現在、私は現在これをしています:
self.response.headers ['Content-Type'] = 'application/json' self.response.out.write( '{"success": "some var"、 "payload": "some var" } ')
いくつかのライブラリを使用してそれを行うより良い方法はありますか?
はい。Python 2.7:でサポートされている json
library を使用する必要があります。
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モジュールを使用し、最後のリソースとしてDjango.utils.simplejson App Engineのモジュール。
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 module があります。これにより、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' })