我正在使用这样的棉花糖序列化:
class BiblioMetadataSchema():
"""Schema for the biblio metadata."""
rec_biblio = fields.Dict()
数据来自 Elasticsearch,我需要在当前 Json 中定义参数 category 始终为数组。 但我不想在 rec_biblio 中定义所有参数,因为我永远不知道到底会有哪些参数。
所以我需要说棉花糖
rec_biblio = fields.Dict()
但是rec_biblio["activity"]["category"] = fields.List()
当前Json
"rec_biblio": {
"_id": "952822",
"_legislation": "456/2012",
"_lib_id": "1",
"_updated": "2000-01-01T00:00:00.0000000Z",
"_version": "21007"
"activity": {
"id": "74154",
"category" : ["AFS", "DUT"]
}
感谢大家的帮助!
我不太熟练所以...
您可以创建其他模式并将它们嵌套在适当的属性中。由于您不知道将出现哪些属性,因此您可以配置架构以包含未知属性。
from marshmallow import Schema, fields, INCLUDE
class ActivitySchema(Schema):
category = fields.List(fields.Raw())
class Meta:
unknown = INCLUDE
class RecBiblioSchema(Schema):
activity = fields.Nested(ActivitySchema)
class Meta:
unknown = INCLUDE
class BiblioMetadataSchema(Schema):
"""Schema for the biblio metadata."""
rec_biblio = fields.Nested(RecBiblioSchema)