如何让Jackson读取无效YAML时抛出异常?
Jackson YAML解析重复键未报错的问题
我需要解析YAML内容,完成两项检查:
- 验证是否符合基础格式规则
- 验证内容结构是否匹配我的数据类结构
我知道Spring Boot读取应用配置的YAML解析器会抛出重复键这类格式错误,但用以下简化代码读取含重复键的无效YAML时,程序既不抛出任何异常,最终结果还只保留了第二个listblock的内容:
无效YAML内容:
listblock: - name: "a" listblock: # 重复键! - name: "b" optional: "b optional"
读取为JsonNode的测试代码:
val yamlMapper = YAMLMapper().apply { registerKotlinModule() } @Test fun `yaml into jsonNode`() { val jsonNode = yamlMapper.readTree(invalidFile) }
即使将YAML映射到以下数据类结构,依然不会出现异常:
data class ObjectDto(val listblock: List<ListElement>) data class ListElement(val name: String, val optional: String?)
对应的读取代码:
val result = yamlMapper.readValue<ObjectDto>(invalidFile.readText())
内容的提问来源于stack exchange,提问作者J.S.
相关产品推荐
相关产品推荐

