You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:13:05