jackson-databind: `SNAKE_CASE` doesn't work when using Lombok's `@AllArgsConstructor`
SNAKE_CASE doesn’t work when using Lombok’s @AllArgsConstructor in 1.7.3 but it (CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES) works regardless of using @AllArgsConstructor in 1.6.5.
This is a sample test to show the problem:
public class ObjectMapperLombokAllArgsConstructorTests {
    @Test
    public void test() throws JsonProcessingException {
        LombokAllArgsConstructorDomain lombokDomain = new LombokAllArgsConstructorDomain();
        lombokDomain.setSomeProperty("test");
        String lombokJson = new ObjectMapper()
                .setPropertyNamingStrategy(
                        PropertyNamingStrategy.SNAKE_CASE)
                .writeValueAsString(lombokDomain);
        System.out.println(lombokJson);
        ManualAllArgsConstructorDomain manualDomain = new ManualAllArgsConstructorDomain();
        manualDomain.setSomeProperty("test");
        String manualJson = new ObjectMapper()
                .setPropertyNamingStrategy(
                        PropertyNamingStrategy.SNAKE_CASE)
                .writeValueAsString(manualDomain);
        System.out.println(manualJson);
        String workaroundAppliedLombokJson = new ObjectMapper()
                .enable(MapperFeature.ALLOW_EXPLICIT_PROPERTY_RENAMING)
                .setPropertyNamingStrategy(
                        PropertyNamingStrategy.SNAKE_CASE)
                .writeValueAsString(lombokDomain);
        System.out.println(workaroundAppliedLombokJson);
    }
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    static class LombokAllArgsConstructorDomain {
        private String someProperty;
    }
    @Data
    @NoArgsConstructor
    static class ManualAllArgsConstructorDomain {
        private String someProperty;
        public ManualAllArgsConstructorDomain(String someProperty) {
            this.someProperty = someProperty;
        }
    }
}
You can also find it in the following location to test immediately: https://github.com/izeye/samples-java-branches/blob/master/src/test/java/learningtest/com/fasterxml/jackson/databind/ObjectMapperLombokAllArgsConstructorTests.java
This was originally reported at: https://github.com/spring-projects/spring-boot/issues/5687
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Comments: 18 (9 by maintainers)
Commits related to this issue
- Fix #1122, #1197 — committed to FasterXML/jackson-databind by cowtowncoder 8 years ago
- Confirm the fix in 2.7.4-SNAPSHOT See https://github.com/FasterXML/jackson-databind/issues/1197 — committed to izeye/samples-java-branches by izeye 8 years ago
I also confirmed that it works, since I was one of the people who pushed for
@ConstructorPropertiessupport. Sorry for the hassle 😅 Keep up the good work.