1
今天我在yaml-cpp庫中發現了下面的奇怪行爲。Yaml-cpp解析器沒有正確處理key:value片段
繼YAML片段:
- { a: b }
被正確地解析爲關鍵:與關鍵= a和值= b值爲元件。但是,當我更新片段:
- { a:b }
片段評估爲標量值「a:b」。
這是正確的行爲?有沒有簡單的方法如何強制解析器評估這個片段爲key:value?
謝謝!
今天我在yaml-cpp庫中發現了下面的奇怪行爲。Yaml-cpp解析器沒有正確處理key:value片段
繼YAML片段:
- { a: b }
被正確地解析爲關鍵:與關鍵= a和值= b值爲元件。但是,當我更新片段:
- { a:b }
片段評估爲標量值「a:b」。
這是正確的行爲?有沒有簡單的方法如何強制解析器評估這個片段爲key:value?
謝謝!
這是正確的行爲。從YAML spec:
通常情況下,YAML堅持「:」映射值指標與空白值分開。這種限制的一個好處是,只要沒有空白,就可以在純標量內使用「:」字符。這允許未加引號的URL和時間戳。這也是一個潛在的混淆源,因爲「a:1」是一個簡單的標量,而不是一個關鍵:值對。
...
爲了確保兼容性JSON,如果流映射內的一個關鍵是類JSON YAML允許鄰近於待指定的以下值「:」。這不會造成歧義,因爲所有類似JSON的密鑰都被指示器包圍。
例如,你可以寫:
- { "a":b }
然而,當他們指出,這不是很可讀;堅持在冒號後放置空格。