Jackson提供了一种非常简单的方法来解析camel_case属性。
带有snake_case属性的Jackson:
customers:
- first_name: "John"
last_name: "Doe"
age: 52
用于分析的代码:
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
选项)?
PS目前,我发现的唯一方法是分别在每个属性上使用@YamlProperty
注解
1条答案
按热度按时间i7uaboj41#
据我所知,SnakeYAML在内部使用反射,因此,您需要使类中的属性名等于YAML文件中的属性名。
因此,在您的情况下,如果您有带snake case的yaml文件,则必须在带snake case的类中使用属性名称。
参见以下示例:
Customer.java
Order.java
Main.java
jackson.yaml
输出:
还有一个选项用于定义TypeDescriptors,告诉SnakeYAML如何Map字段。请参见下面的示例:
jackson.yaml
Customer.java
输出:
订单(客户=[客户(名字= John,姓氏= Doe,年龄= 52)])