<p>我不太清楚你的意图是什么。但是,序列化和反序列化可以通过以下方式实现</p>
<p>通过重命名变量名指定的属性进行序列化和反序列化</p>
<pre><code>from marshmallow import Schema, fields
class ContactSchema(Schema):
first_name = fields.Str(attribute="ftNm", data_key="ftNm")
last_name = fields.Str(attribute="ltNm", data_key="ltNm")
phone = fields.Integer(attribute="pn", data_key="pn")
# serialization to json
def from_list():
data = [
{'ftNm': 'Name1', 'ltNm': 'Surname1', 'pn': 343434},
{'ftNm': 'Name2', 'ltNm': 'Surname2', 'pn': 141414},
{'ftNm': 'Name3', 'ltNm': 'Surname3', 'pn': 656565}
]
schema = ContactSchema(many=True)
return schema.dump(data)
# deserialization from json
def to_list():
json = [
{'ftNm': 'Name1', 'ltNm': 'Surname1', 'pn': 343434},
{'ftNm': 'Name2', 'ltNm': 'Surname2', 'pn': 141414},
{'ftNm': 'Name3', 'ltNm': 'Surname3', 'pn': 656565}
]
schema = ContactSchema(many=True)
return schema.load(json)
</code></pre>
<p>反序列化而不重命名由变量名指定的属性</p>
<pre><code>class ContactSchema(Schema):
first_name = fields.Str(attribute="ftNm")
last_name = fields.Str(attribute="ltNm")
phone = fields.Integer(attribute="pn")
# deserialization from json
def to_list():
json = [
{'first_name': 'Name1', 'last_name': 'Surname1', 'phone': 343434},
{'first_name': 'Name2', 'last_name': 'Surname2', 'phone': 141414},
{'first_name': 'Name3', 'last_name': 'Surname3', 'phone': 656565}
]
schema = ContactSchema(many=True)
return schema.load(json)
</code></pre>
<p>可能无法正确指示转换方向</p>
<pre><code>from marshmallow import Schema, fields, post_load
from dataclasses import dataclass
@dataclass
class Contact:
# id: int
first_name: str
last_name: str
phone: str
class ContactSchema(Schema):
first_name = fields.Str(data_key="ftNm")
last_name = fields.Str(data_key="ltNm")
phone = fields.Integer(data_key="pn")
@post_load
def make_user(self, data, **kwargs):
return Contact(**data)
# deserialization from json
def to_list():
json = [
{'ftNm': 'Name1', 'ltNm': 'Surname1', 'pn': 343434},
{'ftNm': 'Name2', 'ltNm': 'Surname2', 'pn': 141414},
{'ftNm': 'Name3', 'ltNm': 'Surname3', 'pn': 656565}
]
schema = ContactSchema(many=True)
return schema.load(json)
</code></pre>
<p>要序列化和反序列化数据库模型,我建议使用<a href="https://flask-marshmallow.readthedocs.io/en/latest/" rel="nofollow noreferrer">flask-marshmallow</a>和<a href="https://marshmallow-sqlalchemy.readthedocs.io/en/latest/" rel="nofollow noreferrer">marshmallow-sqlalchemy</a></p>