38

現在、私はこれを行っています:

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

いくつかのライブラリを使用してそれを行うためのより良い方法はありますか?

4

5 に答える 5

60

はい、Python2.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))
于 2012-09-30T20:30:57.293 に答える
31

webapp2jsonモジュールの便利なラッパーがあります。利用可能な場合はsimplejsonを使用し、利用可能な場合はPython> = 2.6のjsonモジュールを使用し、最後のリソースとしてAppEngineの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))
于 2013-03-12T23:24:04.323 に答える
13

Python自体にはjsonモジュールがあり、JSONが適切にフォーマットされていることを確認します。手書きのJSONは、エラーが発生しやすくなります。

import json
self.response.headers['Content-Type'] = 'application/json'   
json.dump({"success":somevar,"payload":someothervar},self.response.out)
于 2012-09-30T20:32:11.240 に答える
3

私は通常次のように使用します:

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)
于 2017-03-08T02:49:49.610 に答える
1
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' })
于 2016-02-28T00:25:04.143 に答える