java 如何配置jackson属性命名策略?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/36970807/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 02:03:40 来源:igfitidea点击:
How to configure Hymanson property naming strategy?
提问by Alexey Savchuk
This code does not work:
此代码不起作用:
@Configuration
public class RepositoryRestMvcConfig extends RepositoryRestMvcConfiguration {
...
@Bean
@Override
public ObjectMapper objectMapper() {
ObjectMapper mapper = super.objectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
return mapper;
}
...
}
How to configure Hymanson property naming strategy with JavaConfig?
如何使用 JavaConfig 配置 Hymanson 属性命名策略?
采纳答案by Alexey Savchuk
Solution:
解决方案:
@Configuration
public class RepositoryRestMvcConfig extends RepositoryRestMvcConfiguration {
...
@Bean
@Override
public ObjectMapper objectMapper() {
ObjectMapper mapper = super.objectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
return mapper;
}
@Bean
@Override
public ObjectMapper halObjectMapper() {
ObjectMapper mapper = super.halObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
return mapper;
}
...
}
回答by Sai prateek
You can use below approach for naming strategy :
您可以使用以下方法命名策略:
class MyBean {
private String inReply;
public void setInReplyToUserId(String s) {
inReply = s;
}
public String getInReplyToUserId() {
return inReply;
}
}
class MyNaming extends PropertyNamingStrategy {
@Override
public String nameForGetterMethod(MapperConfig<?> config,
AnnotatedMethod method, String defaultName)
{
// Replace underscore+letter with upper-case(letter)
// (left as exercise to reader!)
return convertName(defaultName);
}
}
objectMapper.setPropertyNamingStrategy(new MyNaming());