programing

앱 엔진 Python webapp2에서 JSON을 올바르게 출력하는 방법

topblog 2023. 3. 9. 21:45
반응형

앱 엔진 Python webapp2에서 JSON을 올바르게 출력하는 방법

지금은 이렇게 하고 있습니다.

self.response 입니다.headers['Content-Type'] = '어플리케이션/json'self.response.out 입니다.write{{"success": "some var", "success": "some var"})

도서관을 이용해서 할 수 있는 더 좋은 방법이 있을까요?

예, Python 2.7에서 지원되는 라이브러리를 사용해야 합니다.

import json

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

webapp2json 모듈용 편리한 래퍼가 있습니다.사용 가능한 경우 simplejson, 사용 가능한 경우 Python > = 2.6의 json 모듈을 사용하고 App Engine의 마지막 리소스로 django.sys.djson 모듈을 사용합니다.

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' })

언급URL : https://stackoverflow.com/questions/12664696/how-to-properly-output-json-with-app-engine-python-webapp2

반응형