Hacker News 首頁上看到的,YAML 寫多的人都遇過類似的問題:「The Norway Problem - why StrictYAML refuses to do implicit typing and so should you」,對應的討論「The Norway Problem (hitchdev.com)」也可以看一下。
第一個「經典」是字串不需要包起來就很容易出事,這邊提到的例子是因為保留字而中槍,挪威的簡碼 NO
變成 False
了:
countries: - GB - IE - FR - DE - NO
>>> from pyyaml import load >>> load(the_configuration) {'countries': ['GB', 'IE', 'FR', 'DE', False]}
同樣的是字串問題,「看起來」是數字的就會變成數字:
python: 3.5.3 postgres: 9.3
然後還是字串,人名遇到保留字:
first name: Christopher surname: Null
這種問題都是碰過一次學一次...
作者另外提到的 StrictYAML 改變了 YAML 規格,我會看看就好,能用 JSON 也許還是會偏好先用 JSON,不是完全解決,但踩雷的機率會少很多。