2016-12-01 69 views
1

有沒有辦法在代碼中加載它時驗證YAML文件中的值。要求是我有一些YAML文件中必須有值的元素。如果驗證失敗,則不應加載YAML。如何在加載YAML配置文件時驗證值?

我正在使用snakeyaml庫,聽說有一種方法可以通過Representsenter來實現。我目前使用加載YAML

代碼,

Reader in = new InputStreamReader(Files.newInputStream(file), StandardCharsets.UTF_8); 
Yaml yaml = new Yaml(); 
yaml.setBeanAccess(BeanAccess.FIELD); 
return yaml.loadAs(in, School.class); 

回答

1

既然你可以在一個YAML文件中的任何值,你應該加載一個函數的文件,測試值和提高,如果一個錯誤價值不是你想要的。如果是,則返回加載的數據。

如果您的YAML具有創建任意對象的標籤,但在加載過程中檢查並不會阻止這種情況,因爲這樣的對象可能是在您想要檢查的值之前創建的。

如果你在你的YAML中有標籤,這是一個真正的問題,那麼你必須爲可以處理標籤的YAML文件製作一個safe_load -er(通過創建標準映射對象),然後檢查值並使用完整標籤支持重新加載。