使用 Marshmallow 仅定义一个参数

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

我正在使用这样的棉花糖序列化:

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"]
    }

感谢大家的帮助!

我不太熟练所以...

python serialization marshmallow
1个回答
0
投票

您可以创建其他模式并将它们嵌套在适当的属性中。由于您不知道将出现哪些属性,因此您可以配置架构以包含未知属性。

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