OpenAPI Python 生成器 - 从字典转换为模型
OpenAPI Python Generator - convert from dict to model
使用 python 的 openapi 生成器,我得到了一堆生成的模型,我可以像这样实例化它们:
> yoda = Jedi(name="Yoda", light_saber=LightSaber(colour="green"))
我可以使用 .to_dict()
方法轻松地将它们转换为字典:
> yoda.to_dict()
{"name": "Yoda", "light_saber": {"colour": "green"}}
但是我不确定如何从 dict 反序列化回适当的模型。
我尝试了以下方法并遇到类型错误:
> Jedi(**yoda_dict)
...
my_client.exceptions.ApiTypeError: Invalid type for variable 'light_saber'.
Required value type is LightSaber and passed type was dict at ['light_saber']
我也遇到了与 Jedi._from_openapi_data(**yoda_dict)
相同的错误
有没有办法将字典转换为类型化的 openapi 生成模型?
你需要先re-serialize字典里的光剑,然后你可以把它传回给Jedi
:
yoda_dict['light_saber'] = LightSaber(**yoda_dict['light_saber'])
Jedi(**yoda_dict)
事实证明,如果您传入 _configuration
属性,openapi 只会尝试转换类型。我能够使用
成功反序列化
from my_client.configuration import Configuration
Jedi(**yoda_dict, _configuration=Configuration())
请注意,我还点击了 this bug,因为我在我的架构中使用了 allOf
。所以也不得不降级到openapi generator 5.1.1.
使用 python 的 openapi 生成器,我得到了一堆生成的模型,我可以像这样实例化它们:
> yoda = Jedi(name="Yoda", light_saber=LightSaber(colour="green"))
我可以使用 .to_dict()
方法轻松地将它们转换为字典:
> yoda.to_dict()
{"name": "Yoda", "light_saber": {"colour": "green"}}
但是我不确定如何从 dict 反序列化回适当的模型。
我尝试了以下方法并遇到类型错误:
> Jedi(**yoda_dict)
...
my_client.exceptions.ApiTypeError: Invalid type for variable 'light_saber'.
Required value type is LightSaber and passed type was dict at ['light_saber']
我也遇到了与 Jedi._from_openapi_data(**yoda_dict)
有没有办法将字典转换为类型化的 openapi 生成模型?
你需要先re-serialize字典里的光剑,然后你可以把它传回给Jedi
:
yoda_dict['light_saber'] = LightSaber(**yoda_dict['light_saber'])
Jedi(**yoda_dict)
事实证明,如果您传入 _configuration
属性,openapi 只会尝试转换类型。我能够使用
from my_client.configuration import Configuration
Jedi(**yoda_dict, _configuration=Configuration())
请注意,我还点击了 this bug,因为我在我的架构中使用了 allOf
。所以也不得不降级到openapi generator 5.1.1.