读取空的YAML文件

use*_*249 7 java json yaml jackson

对于配置文件格式,我想使用YAML和Jackson来阅读它.所以我有一个Configuration带有一些属性的POJO类,只需直接从文件中读取相应的对象ObjectMapper.readValue().

原则上工作正常,除非配置文件 - 注释除外 - 为空.然后例外

com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
Run Code Online (Sandbox Code Playgroud)

被扔了.由于所有配置值都有默认值,因此不指定任何配置值的值应该没问题,所以我想允许这样做.有没有办法说服杰克逊接受一个空文件?

Ant*_*hon 2

如果 YAML 文件的顶层不是序列或映射,则它是标量。这样您就可以拥有仅包含字符串(或数字)的 YAML 文件。如果标量值为空,在列表中,作为映射中的值,它相当于表示为 NULL 标量值(nil对于 Ruby,None对于 Python)。

空 YAML 文件是一个有效的 YAML 文件,其标量因缺少任何特定值而为 NULL。

现在,仅单个标量文件很少有用,通常顶层是映射或序列或某些派生的复杂类型。看来您的应用程序假设顶层具有适当的复杂类型,并且不检查解析器是否返回 NULL,它应该检查。