yaml - YAML 中名称值对的分层列表
问题描述
在 YAML 中表示如下名称值对的分层列表的最佳方式是什么:
name_1: value_1
subName1_1: subValue1_1
subName1_2: subValue1_2
name_2: value_2
subName2_1: subValue2_1
subName2_2: subValue2_2
name_3: value_3
subName3_1: subValue3_1
subName3_2: subValue3_2
name_4: value_4
subName4_1: subValue4_1
subName4_2: subValue4_2
我正在考虑以下内容,但不确定这是否是最好的方法:
- name_1:
ID: 1
subNames:
- subName1_1:
ID: 1
- subName1_2:
ID: 2
- name_2:
ID: 2
subNames:
- subName2_1:
ID: 1
- subName2_2:
ID: 2
或者我也可以这样做:
- Name: Name_1
ID: 1
SubNames:
- SubName: subName1_1
ID: 1
- SubName: subName1_2
ID: 2
- Name: Name_2
ID: 2
SubNames:
- SubName: subName2_1
ID: 1
- SubName: subName2_2
ID: 2
我需要 name_* 以及它们对应的值是唯一的,所以我更喜欢 python 可以轻松使用的东西来验证没有重复。
解决方案
那么有值键类型。它不是为 YAML 1.1 定义的标准的一部分,但它旨在解决这个问题。它建议您基本上在名为的映射中有一个值,=
其中包含默认值:
name_1:
=: value_1
subName1_1: subValue1_1
subName1_2: subValue1_2
name_2:
=: value_2
subName2_1: subValue2_1
subName2_2: subValue2_2
name_3:
=: value_3
subName3_1: subValue3_1
subName3_2: subValue3_2
name_4:
=: value_4
subName4_1: subValue4_1
subName4_2: subValue4_2
或者,您可以将值设为包含单个 key_value 对的列表:
name_1:
- value_1
- subName1_1: subValue1_1
- subName1_2: subValue1_2
name_2:
- value_2
- subName2_1: subValue2_1
- subName2_2: subValue2_2
name_3:
- value_3
- subName3_1: subValue3_1
- subName3_2: subValue3_2
name_4:
- value_4
- subName4_1: subValue4_1
- subName4_2: subValue4_2
您可以使用流序列编写此代码,因为 YAML 允许流序列包含单个键值对,这些键值对将被解释为隐式映射:
name_1: [value_1,
subName1_1: subValue1_1,
subName1_2: subValue1_2]
name_2: [value_2,
subName2_1: subValue2_1,
subName2_2: subValue2_2]
name_3: [value_3,
subName3_1: subValue3_1,
subName3_2: subValue3_2]
name_4: [value_4,
subName4_1: subValue4_1,
subName4_2: subValue4_2]
请注意,当您这样做时,子名称中不能有任何类型的块样式节点,但其他流节点会很好。
推荐阅读
- c++ - 从地图复制到指针列表
- syntax-error - 在 ocaml 中出现语法错误
- javascript - AutoPostBack 恢复我对事件 onChange 所做的更改。ASP.NET
- javascript - discord.js:将用户名添加到字符串的问题
- node.js - 获取用户 ID 时遇到问题
- python - Python:不明白为什么在 GUI“command=”中需要 lambda 来调用函数
- java - 在 IntelliJ IDEA 上使用 Java 中的 openCSV
- vue.js - 向 Vue.js cli 3.0 应用程序添加路由
- c# - 在差异方法中更新引用(`ref`)
- sql - 优化 SQL 查询,为空数据显示 0