みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

YAMLは読みやすいが書きにくい

YAMLのグチを書きますが,みーはYAMLが読みやすくて好きです.ValidなYAMLを書くのが時々難しいという話です.

以下のようなYAMLを作成しました.

---
5E212220:
  type: normal
5E212221:
  type: hard
5E212222:
  type: easy

これをparseしたところ,以下のようなエラーが発生しました.

YAML is invalid: duplicated mapping key (4:1) 
1 | 
2 | 5E212220: 
3 | type: normal 
4 | 5E212221: 
-----^ 
5 | type: hard 
6 | 5E212222:

キーが重複しているというエラーですが,5E212220などは全て異なる値なので,何が問題なのかさっぱり理解できませんでしたが,以下の説明を読んで分かりました.

Example 10.9. Core Tag Resolution

Floats: [ 0., -0.0, .5, +12e03, -2E+05 ]

YAML Ain’t Markup Language (YAML™) Version 1.2

どうやら,5E212220はfloatと解釈されるようです.これを防ぐにはダブルクオーテーションで囲って文字列であることを示します.

なお,この現象は2文字目のEが原因なので,EをFに置換した以下のyamlは,キーが文字列と解釈されるので,正しいyamlとなります.

---
5F212220:
  type: normal
5F212221:
  type: hard
5F212222:
  type: easy