【问题标题】:Normalize nested dict in Cerberus规范化 Cerberus 中的嵌套字典
【发布时间】:2021-11-03 21:38:18
【问题描述】:

我想在带有 Cerberus 规范化功能的嵌套字典中使用默认值。不幸的是,它不起作用。 我有如下代码:

from yaml import load, Loader
from cerberus import Validator

text_schema = """
server:
  type: dict
  required: True
  schema:
    host:
      required: True
      type: string
    api:
      type: dict
      required: True
      schema:
        enabled:
          type: boolean
          required: True
          default: True
"""

testyaml = """
server:
  host: hostname
"""
schema = load(text_schema, Loader=Loader)
doc = load(testyaml, Loader=Loader)
v = Validator(schema, purge_unknown=True)
print(v.normalized(doc))

我最终得到:

{'server': {'host': 'hostname'}}

我希望有:

{'server': {'host': 'hostname', 'api': {'enabled': true}}}

这可能吗?

【问题讨论】:

    标签: python cerberus


    【解决方案1】:

    不确定这是否正确,但只需向 api 键添加一个空的默认值即可。

    text_schema = """
    server:
      type: dict
      required: True
      schema:
        host:
          required: True
          type: string
        api:
          type: dict
          required: True
          default: {}
          schema:
            enabled:
              type: boolean
              required: True
              default: True
    """
    

    使用上述架构,我得到: {'server': {'host': 'hostname', 'api': {'enabled': True}}}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 2018-05-23
      • 1970-01-01
      • 2013-05-30
      相关资源
      最近更新 更多