读取空的YAML文件

时间:2015-02-20 12:01:28

标签: java json jackson yaml

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

原则上工作正常,除非配置文件是 - 除了注释 - 为空。然后是异常

com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input

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

1 个答案:

答案 0 :(得分:0)

如果YAML文件的顶级不是序列或映射,则它是标量。这样你就可以得到一个只包含字符串(或数字)的YAML文件。如果标量值为空,则在列表中,作为映射中的值,它等于表示为(nil对于Ruby,None对于Python)的NULL标量值。

空YAML文件是一个有效的YAML文件,其标量在没有任何特定值的情况下为NULL。

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