如何在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
相关产品推荐
相关产品推荐

