如何使用Jackson将snake case yaml映射到camelcase java字段



我有一个yaml文件,里面有骆驼大小写的键,比如

---
start_date: "2018-09-01"
day_date: "2018-09-01"
userProduct:
sales_channel: "1"
user_group: "1" 

我有以下Java PoJos

public class Input{
private String startDate = "";
private String dayDate = "";
@JsonUnwrapped
private Product userProduct;
// getters/setters
}
public class Product {
private salesChannel = "";
private userGroup = "";
// getters/setters
}

现在我想和杰克逊一起读这篇文章,我认为使用就足够了

ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
return objectMapper.readValue(inputData, Input.class); // inputData is the yaml as string

但这不会填充嵌套的对象。来自Input对象的startDatedayDate是正确的,但例如input.getUserProduct().getSalesChannel()返回一个空字符串。

我还尝试在yaml文件中使用user_product而不是userProduct,但这并没有改变任何内容。

这里怎么了?如何在yaml中定义snake案例,在java中定义camelcase?

我找到了一个解决问题的方法,那就是删除嵌套的对象。当所有字段都在Input类中并删除Product时,它将按预期工作。

尽管如此,我仍然对这个问题持开放态度,因为我仍然感兴趣,这是否可以通过嵌套对象实现