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

如何在SnakeYAML中解析snake_case格式属性?

SnakeYAML是否支持类似Jackson的全局snake_case属性解析配置?

背景场景

Jackson提供了便捷的全局配置来解析snake_case格式的属性,示例如下:

示例YAML文件(jackson.yaml)

customers:
  - first_name: "John"
    last_name: "Doe"
    age: 52

Jackson解析代码

ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
InputStream inputStream = Main.class.getClassLoader().getResourceAsStream("jackson.yaml");
Orders orders = objectMapper.readValue(inputStream, Orders.class);

问题

请问SnakeYAML中是否有类似PropertyNamingStrategies.SNAKE_CASE的全局配置选项?目前找到的唯一方法是为每个属性单独添加@YamlProperty注解。


回答

SnakeYAML没有提供类似Jackson的全局属性命名策略配置,无法通过一行代码全局开启snake_case到驼峰命名的自动映射。

目前实现snake_case属性解析的常用方式就是你提到的:为Java类的每个对应属性添加@YamlProperty注解,指定YAML中的snake_case字段名,示例如下:

public class Customer {
    @YamlProperty("first_name")
    private String firstName;
    
    @YamlProperty("last_name")
    private String lastName;
    
    private int age;

    // getter、setter省略
}

如果觉得逐个加注解繁琐,也可以自定义Construct或BeanDescription来实现全局的命名转换逻辑,但这种方式需要编写较多自定义代码,复杂度远高于Jackson的全局配置,大部分场景下直接使用@YamlProperty注解是更简洁的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:05:15