-1

我正在考虑使用 YAML 按以下方式存储按时间顺序排列的数据:

- entrydate: 5:55 AM 1/1/2013
  title: blog post 1
  tags: [yaml, json]
  description: what have i learned today 1
  location: scottsdale
- entrydate: 5:55 AM 1/2/2013
  title: blog post 2
  tags: [general,software-development]
  description: what have i learned today 2
  location: scottsdale

这个 YAML 文档将由一个 C# 应用程序每天更新,该应用程序收集数据,并在周末/月末,一个 Python 程序计算一些关于博客进度的指标。

这个问题的答案Is this valid YAML? 建议 YAML 支持部分文档的概念,如果按上述格式格式化,则每个博客条目都将被视为一个单独的实体。现在我担心两件事。

  1. YAML 解析器是否能够识别每个实体(或博客条目,在这种情况下),entrydate因为它位于每个元素的顶部?我问这个是因为在yamlint在线 yaml 解析器中,解析的输出都被重新排序,并且entrydate与其他项目混为一谈。
  2. YAML 对这项任务来说是不是完全矫枉过正?我觉得这很贴切,因为存储的数据将是人类可读的格式,如果需要,我可以轻松地手动编辑文档。

PS:我为此考虑了 JSON,但我觉得 YAML 太容易看了。

4

1 回答 1

3

YAML 解析器是否能够通过 entrydate 来识别每个实体(或博客条目,在这种情况下),因为它位于每个元素的顶部?我问这个是因为在 yamlint 和在线 yaml 解析器中,解析的输出被重新排序,并且 entrydate 与其他项目混为一谈。

我不完全清楚你在这里问什么。这是有效的 YAML,它会生成一个字典列表。每个字典都有几个键(描述、条目日期、位置、标签、标题)。使用 YAML 解析器读取数据后,您可以引用任何这些键;哪个出现在输出中的“第一个”通常并不重要。通常,字典实现不保留添加键的顺序。

列表的顺序将被保留,因此带有entrydate=的条目5:55 AM 1/1/2013将始终是列表中的第一个(只要它是文件中的第一个条目)。

YAML 对这项任务来说是不是完全矫枉过正?我觉得这很贴切,因为存储的数据将是人类可读的格式,如果需要,我可以轻松地手动编辑文档。

您正在尝试以简单易读的格式存储结构化数据。这就是 YAML 的用途。

于 2013-01-11T21:24:06.470 回答