YAML – 流式映射
YAML - 流式映射
Section titled “YAML - 流式映射”在 YAML 中,数据结构可以用两种主要风格表示:块状风格(block style)(使用缩进)和流式风格(flow style)(更紧凑,通常是内联的)。流式映射(flow mappings)是块状映射(block mappings)的流式风格等价物,它们表示用花括号 {} 括起来的无序键值对(key-value pairs)集合,类似于字典、对象或关联数组(associative arrays)。
流式映射的主要特点:
- 用花括号
{}括起来:{ key1: value1, key2: value2 }。 - 键值对之间用冒号和一个空格(
:)分隔。 - 多个键值对之间用逗号和一个空格(
,)分隔。 - 在一个映射中,键必须是唯一的。重复的键通常会导致错误,或者根据 YAML 解析器(parser)的不同,后面的键会覆盖前面的键。
- 流式映射常用于简单、紧凑的对象表示,类似于 JSON 对象(JSON objects)。
这是一个演示流式映射的示例。我们将使用这种风格定义一个用户资料:
# YAML 1.2user_profile: { name: "John Doe", age: 30, city: "New York" }
# Flow mappings can also span multiple lines for readabilitycontact_details: { email: "john.doe@example.com", phone: "123-456-7890"}
# Flow mappings can be nestedpreferences: { theme: "dark", notifications: { email: true, sms: false }}上面 YAML 内容的等效 JSON 表示(JSON representation)如下:
{ "user_profile": { "name": "John Doe", "age": 30, "city": "New York" }, "contact_details": { "email": "john.doe@example.com", "phone": "123-456-7890" }, "preferences": { "theme": "dark", "notifications": { "email": true, "sms": false } }}注意流式映射是如何直接转换为 JSON 对象的。当您需要紧凑的表示或在较大结构中嵌入一个小映射时(甚至可以在流式序列中作为值),它们特别有用。
何时使用流式映射与块状映射
Section titled “何时使用流式映射与块状映射”使用流式映射的场景:
- 简单、小的对象,内联表示更清晰。
- 与 JSON 对象非常相似的数据。
- 在其他流式结构中嵌入小映射,或甚至在块状结构中作为值使用。
使用块状映射(基于缩进)的场景:
- 更大、更复杂的对象,可读性从显式缩进中获益。
- 涉及多行字符串值时,因为块状标量(block scalars)与块状映射集成得更自然。
选择哪种风格通常取决于数据的可读性和复杂性。许多 YAML 文档会同时使用这两种风格。