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

如何使用ObjectMapper解析YAML时忽略#开头的注释行?

问题描述

给定YAML文件示例:

---
# Author : John Doe
# Updated Date: 6/21/2024 4:23:22 PM
# Status: Deployed.
name: "stack overflow"
version: 5

当前使用以下Java代码解析该YAML:

ObjectMapper mapper = new ObjectMapper(); 
MyDoc myDoc = mapper.readValue(response.toString(), MyDoc.class);

请问如何在解析该YAML文件时忽略所有以#开头的注释行?


解决方法

得用Jackson专门的YAML解析模块,默认它就会自动跳过YAML里的注释,具体步骤如下:

  • 添加依赖
    确保项目中引入jackson-dataformat-yaml依赖(以Maven为例):
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <version>你的Jackson版本号</version>
</dependency>
  • 创建YAML专用的ObjectMapper
    不要使用默认的ObjectMapper,要基于YAMLFactory创建专门处理YAML的实例:
// 导入必要的类
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;

// 初始化YAML解析器
ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory());
MyDoc myDoc = yamlMapper.readValue(response.toString(), MyDoc.class);
  • 显式配置注释忽略(可选)
    如果需要明确指定注释处理规则(默认已开启跳过注释),可以添加以下配置:
yamlMapper.configure(com.fasterxml.jackson.dataformat.yaml.YAMLParser.Feature.ALLOW_COMMENTS, true);

注:设置为true时,解析器会允许注释存在并自动跳过;若设为false,遇到注释会直接抛出语法错误。

内容的提问来源于stack exchange,提问作者Krishnam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:52:08