Flask-restful使用嵌套字段生成具有嵌套响应的文档,得到TypeError:嵌套类型的对象不可JSON序列化

时间:2020-04-01 21:48:37

标签: python json nested swagger flask-restplus

我正在使用flask-restx / flask-restplus,尝试利用swagger文档生成功能。我的模型有此设置。

A = api.model(
    'A', {
        "a1": fields.String(description=''),
        "a2": fields.String(description='')
    }
)

B = api.model(
    'B', {
        "b1": fields.String(description=''),
        "b2": fields.String(description='')
    },
)

response_with_nested_data = api.model(
    "TLD", {
        "A": fields.Nested(
            A, description=''
            ),
        "B": fields.Nested(
            B, description=''
        )
    }
)

我有一个类似的处理程序

@myapi.route('/aa', methods=['POST'])
class AA(Resource):
    @myapi.expect(simple_expected_model)
    @myapi.response(200, response_with_nested_data)
    @do_auth(require_token=True, render_errors=True)
    def post(self):
        return handle_request(request)

我正试图从swagger文档中的该api端点获取输出,

{
    "A": {
        "a1": "a",
        "a2": "aa"
    }
    "B": {
        "b1": "b",
        "b2": "bb"
    }
}

但是当启动我的服务器并点击我庞大的文档生成页面时,我得到一个错误

TypeError: Object of type Nested is not JSON serializable

所以我知道我在这里做错了。有什么想法让我错了,应该怎么做?

1 个答案:

答案 0 :(得分:0)

我最终通过在装饰器中使用关键字来解决此问题。

 @myapi.response(200, response_with_nested_data)

成为

@myapi.response(code=200, model=response_with_nested_data, description='')