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());
Share:
14,505
Alexey Savchuk
Author by

Alexey Savchuk

Updated on June 04, 2022

Comments

  • Alexey Savchuk
    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
    Sotirios Delimanolis almost 8 years
    What have you changed? Why does that make a difference?
  • Alexey Savchuk
    Alexey Savchuk almost 8 years
    I'm added propertyNamingStrategy to halObjectMapper(). defaultMessageConverters() used halJacksonHttpMessageConverter() and jacksonHttpMessageConverter() for configure messageConverters.
  • Sotirios Delimanolis
    Sotirios Delimanolis almost 8 years
    I don't see how that's in any way related to your question though.