【问题标题】:YAML for chronological dataYAML 用于按时间顺序排列的数据
【发布时间】:2013-01-11 21:06:42
【问题描述】:

我正在考虑使用 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 程序计算有关博客进度的一些指标。

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

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

PS:我考虑过使用 JSON,但我觉得 YAML 太容易看了。

【问题讨论】:

    标签: c# python yaml markdown


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 虽然我的第一个问题没能很好地回答,但你的回答正是我想知道的。谢谢!
    • +1 绝对使用 YAML。我知道没有更适合这项任务的了。
    猜你喜欢
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多