Flask Restful API 中的自定义 JsonEncoder

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?