如何解决Flask Restful API 中的自定义 JsonEncoder
我正在尝试在 Flask Restful 中自定义 JsonEncoder,但它似乎不起作用。目标是将 64 位且没有符号的整数转换为字符串,以避免在 javascript 中出现 munging。
我遇到的问题是自定义 JsonEncoder 似乎没有任何效果。
app.py
import json
from flask import Flask,current_app
from flask_restful import Api,Resource
class CustomJsonEncoder(json.JSONEncoder):
def default(self,o):
# convert big int to string
if isinstance(o,int):
return o
# check if int is 64 bit or 32 bit
#if o.bit_length() > 32:
# return str(o)
if isinstance(o,datetime):
return o.isoformat()
# return super(JsonDateTimeEncoder,self).default(o)
return json.JSONEncoder.default(self,o)
class Config(object):
APP_NAME = 'my_app'
APP_HOST = '127.0.0.1'
APP_PORT = 5010
RESTFUL_JSON = {'cls': CustomJsonEncoder}
class CustomApi(Api):
def handle_error(self,e):
for val in current_app.error_handler_spec.values():
for handler in val.values():
registered_error_handlers = list(filter(lambda x: isinstance(e,x),handler.keys()))
if len(registered_error_handlers) > 0:
raise e
return super().handle_error(e)
class MyEndpoint(Resource):
def get(self):
return { 'my_id': 9149461702838917,'regular': 100 }
def create_app():
app = Flask(__name__)
app.config.from_object(config)
api = CustomApi(app,prefix='/api/v1')
register_endpoints(api)
return app
def register_endpoints(api):
api.add_resource(MyEndpoint,'/my/endpoint/')
if __name__ != '__main__':
app = create_app()
app.run(
host=app.config['APP_HOST'],port=app.config['APP_PORT'],debug=app.config['APP_DEBUG_FLASK'],ssl_context=app.config['APP_SSL_CONTEXT']
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。