烧瓶和带有日期时间的Zeep响应处理

问题描述 投票:-1回答:1

我正在使用Zeep调用SOAP WebService,它返回带有datetime对象的类似JSON的响应。我想使用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可序列化结构?

python web-services flask flask-restful zeep
1个回答
0
投票

呼叫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)
© www.soinside.com 2019 - 2024. All rights reserved.