add ConstructorProperties:
- Create a
lombok.configfile in an appropriate location with the line:
lombok.anyConstructor.addConstructorProperties = true - Add lombok
@Valueannotation to your class to make it immutable
Then serialization and deserialization by Jackson works as expected.
This method:
- meets the criteria
- has less boilerplace than the previous top answer
- works on v1.16.20 (January 9th, 2018) and later
Edit: 2020-08-16
- Note: Using
@Builderwith@Valuecauses this solution to fail. (Thanks to comment from @guilherme-blanco below.)
However, if you also add e.g.@AllArgsConstructorit does still work as expected.
Edit: 2021-08-19
- Note: When you add or change a
lombok.configfile the change is not picked up unless you do a rebuild (clean then build). I have been caught out by this a few times. @Jacksonizedannotation solution is another method to achieve the desired outcome for the specific classes annotated. However, I personally prefer not to need to remember to annotate every class used for deserialization. Usinglombok.configremoves this overhead.