YAML举例说明

YAML举例说明,yaml,Yaml,我正在尝试为我的应用程序设计配置文件格式,并选择了YAML。然而,这(显然)意味着我需要能够定义、解析和验证正确的YAML语法 在配置文件中,必须有一个名为widgets的集合/序列。此序列需要包含一组类型化小部件(可能的类型有fizz、buzz和foobaz)。每个小部件还具有名称和各种其他属性(取决于类型)。例如: myappconfig.yaml ================ widgets: - buzz: name: Red Buzz isSilly:

我正在尝试为我的应用程序设计配置文件格式,并选择了YAML。然而,这(显然)意味着我需要能够定义、解析和验证正确的YAML语法

在配置文件中,必须有一个名为
widgets
的集合/序列。此序列需要包含一组类型化小部件(可能的类型有
fizz
buzz
foobaz
)。每个小部件还具有
名称
和各种其他属性(取决于类型)。例如:

myappconfig.yaml
================
widgets:
  - buzz:
      name: Red Buzz
      isSilly: true
  - buzz:
      name: Blue Buzz
      isSilly: false
  - foobaz:
      name: Abracadabra
      rating: 3000
      specialty: Such YAML much amaze

我的简单问题是:我是否在上面创建了正确/有效的YAML文件?也就是说,根据我的约束条件,我在实现中是否正确理解了YAML语法?

您可以检查YAML的语法,例如

您的YAML解析如下:

{'widgets': [{'buzz': {'name': 'Red Buzz', 'isSilly': True}}, {'buzz': {'name': 'Blue Buzz', 'isSilly': False}}, {'foobaz': {'rating': 3000, 'name': 'Abracadabra', 'specialty': 'Such YAML much amaze'}}]}

它看起来像您想要的东西。

如果小部件名称应该是唯一的,您可以将其用于键:

widgets:
  RedBuzz:
    type: buzz
    isSilly: true
  BlueBuzz:
    type: buzz
    isSilly: false
  Abracadabra:
    type: foobaz
    rating: 3000
    specialty: Such YAML much amaze
这一个使用按小部件类型分组:

widgets:
  buzz:
    - RedBuzz:
        isSilly: true
    - Blue Buzz:
        isSilly: false

  foobaz:
    - Abracadabra:
        rating: 3000
        specialty: Such YAML much amaze
此外,如果你觉得自己很无聊,你可以使用小部件类型合并如下:

buzz_widget: &buzz_widget
  type: buzz

foobaz_widget: &foobaz_widget
  type: foobaz

widgets:
  RedBuzz:
      isSilly: true
      <<: *buzz_widget
  BlueBuzz:
      isSilly: false
      <<: *buzz_widget
  Abracadabra:
      rating: 3000
      specialty: Such YAML much amaze
      <<: *foobaz_widget
buzz\u小部件:&buzz\u小部件
类型:嗡嗡声
foobaz_小部件:&foobaz_小部件
类型:foobaz
小部件:
雷德巴斯:
伊西利:是的

我不确定你的第二个例子是否符合你的意图。例如,第三行和第四行用两个键描述映射:
RedBuzz
,其值为
null
,以及
isSilly
,其值为
true
。我想您可能打算将
isSilly
缩进得比
RedBuzz
更多,这样第三行和第四行将描述一个带有一个键的映射,
RedBuzz
,其值是一个带有一个键的映射,
isSilly
。也许我误解了你的意图。是的,你完全正确,我错过了意图!谢谢你!