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
@ConstructorProperties
support. Sorry for the hassle 😅 Keep up the good work.