How to configure jackson property naming strategy?
14,505
Solution 1
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;
}
...
}
Solution 2
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());
Author by
Alexey Savchuk
Updated on June 04, 2022Comments
-
Alexey Savchuk almost 2 years
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 Jackson property naming strategy with JavaConfig?
-
Sotirios Delimanolis almost 8 yearsWhat have you changed? Why does that make a difference?
-
Alexey Savchuk almost 8 yearsI'm added propertyNamingStrategy to halObjectMapper(). defaultMessageConverters() used halJacksonHttpMessageConverter() and jacksonHttpMessageConverter() for configure messageConverters.
-
Sotirios Delimanolis almost 8 yearsI don't see how that's in any way related to your question though.