Java is a core of programming, and the word of programming is incomplete without this language. It is like a handy language that every programmer use. When you are working on Java, you may encounter the error “No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator”. This error seems like a big code error that you may be wondering how it shows up.
No need to worry as we are going to shed light on this error and how can you code to get it resolved. But, first see how the error occurs
How does the error occur?
When you are using Jackson, you may land yourself in the error the moment you compile the code.
Let’s have a look at the code and issue that shows up in return
class MyClass {
private byte[] payload;
public MyClass(){}
@JsonCreator
public MyClass(@JsonProperty("payload") final byte[] payload) {
this.payload = payload;
}
public byte[] getPayload() {
return this.payload;
}
}
This is the class scenario that is looking like this when you code using Jackson. When you use serialization, it works, but when it comes to deserializing, the error occurs. Check out the warning you get after this code:
No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator
Now that you have seen how the error “No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator” occurs. Have a look at how to fix it
How to Fix the error?
Let’s figure out the best possible solutions to fix the error
Using an empty constructor
The simplest solution to tackle the error is to include an empty constructor
@JsonProperty("field_name")
Include a default constructor
This one is also an effective solution that works the same way the first fix works. In this solution, you need to just include the default constructor to get the issue fixed. Check out the code that can help you
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString
@EqualsAndHashCode
public class User {
private Long userId;
private String shortName;
}
Use Lombok constructor
To solve the error, you just need to add the following code to the lombok.config file. Check out the code
lombok.anyConstructor.addConstructorProperties=true
Add ParanamerModule
Another way to fix the error is to use the ParanamerModule to the ObjectMapper. Use the code below to add
mapper.registerModule(new ParanamerModule());
Maven
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-paranamer</artifactId>
<version>${jackson.version}</version>
</dependency>
In this solution, the class doesn’t need to be compiled. This solution works.
Conclusion
Here you are in the end! You know how to fix the error “No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator”. You can use the above-mentioned code whenever you get an error.
Hope you find it helpful!
Don’t forget to drop a comment below!
Reference Source: