Flask并用datetime处理Zeep响应

2024-10-03 19:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Zeep调用一个SOAP Web服务,它返回一个类似JSON的带有datetime对象的响应。我想使用Flask编写一个微服务并返回正确的JSON响应。然而,Flask抱怨说:

TypeError: Object of type datetime is not JSON serializable
from flask import Flask
from flask_restful import Resource, Api
import datetime

app = Flask(__name__)
api = Api(app)

class foo(Resource):
    def get(self, x):
        zeepResponse = {
            'Response': {
                'Number': x,
                'DateTime': datetime.datetime(2020, 1, 1, 0, 0, 0),
                'Other': None
            }
        }
        return zeepResponse

api.add_resource(foo, '/post/<int:x>')

if __name__ == '__main__':
    app.run(debug=True)

要从命令行进行测试,只需运行:

% curl http://localhost:5000/post/911

你能告诉我如何将zeepResponse(特别是datetime)转换成一个合适的JSON可序列化结构吗


Tags: namefromimportapijsonappflaskdatetime
1条回答
网友
1楼 · 发布于 2024-10-03 19:24:46

调用json.dumps(zeepResponse, default=str)似乎可以解决我的问题。从Stack Overflow 11875770

from flask import Flask
from flask_restful import Resource, Api
import datetime
import json

app = Flask(__name__)
api = Api(app)

class foo(Resource):
    def get(self, x):
        zeepResponse = {
            'Response': {
                'Number': x,
                'DateTime': datetime.datetime(2020, 1, 1, 0, 0, 0),
                'Other': None
            }
        }
        return json.loads(json.dumps(zeepResponse, default=str))

api.add_resource(foo, '/post/<int:x>')

if __name__ == '__main__':
    app.run(debug=True)

相关问题 更多 >