2016-12-01 6 views
1

コード内にYAMLファイルをロードしている間に値を検証する方法はありますか?要件は、YAMLファイルにいくつかの要素があり、値が必要です。検証に失敗した場合は、YAMLをロードしないでください。YAML設定ファイルを読み込んでいるときに値を検証する方法は?

私はsnakeyamlライブラリを使用しています。これを行うにはRepresenterを使用する方法があると聞きました。

私は現在、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を作成して値を確認する必要があります完全なタグをサポートしてリロードします。

関連する問題