gpt4 book ai didi

json - 应用带有 Marshmallow 序列化的 JSON Schema

转载 作者:行者123 更新时间:2023-12-03 14:33:35 24 4
gpt4 key购买 nike

我正在使用 Marshmallow 对 JSON 字符串进行序列化和反序列化。从 Marshmallow API Docs ( https://marshmallow.readthedocs.io/en/3.0/api_reference.html ) 中,您似乎已经指定了字段列表(并且,除非使用 Meta )它们的数据类型。例如:

Marital_Status=Fields.Str()
Employer=Fields.Str()
ContactInfo(data) #where ContactInfo is a class not shown here

但是,我已经有一个指定字段和数据类型的 JSON 模式。例如:
the_template_schema={

"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://example.com/root.json",
"type": "object",
"title": "The Root Schema",
"properties": {
"Marital_Status": {
"$id": "#/properties/Marital_Status",
"type": "string",
"title": "The Marital_status Schema",
"default": "",
"examples": [
"Married"
],
"pattern": "^(.*)$"
}
"Employer": {
"$id": "#/properties/Employer",
"type": "string",
"title": "The Employer Schema",
"default": "",
"examples": [
"Roivant"
],
"pattern": "^(.*)$"
}

}
}

我的问题

我想根据提供的模式数据为 Marshmallow 指定字段。就像是:
fields.magicmethod(the_template_schema)
ContactInfo(data)

这可能吗?如果是这样,怎么做?

最佳答案

在 marshmallow 中,模式应该在 Python 代码中指定为一个类(参见此处的示例:https://marshmallow.readthedocs.io/en/3.0/quickstart.html#declaring-schemas)。

对于您的情况,它可能看起来像

from marshmallow import Schema, fields

class ContactInfoSchema(Schema):
Marital_Status=Fields.Str()
Employer=Fields.Str()

你需要用棉花糖吗?如果您的模式已经以 json-schema 格式存在,您可以使用 json.load 加载对象并使用 jsonschema 对模式进行验证模块。

https://medium.com/python-pandemonium/json-the-python-way-91aac95d4041

https://python-jsonschema.readthedocs.io/en/latest/

关于json - 应用带有 Marshmallow 序列化的 JSON Schema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54244543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com