@JsonIgnoreProperties(ignoreUnknown=false) is not working with spring 4.2.0 and upper version of spring. But it is working with 4.0.4 and 4.0.1 . I am using spring 4.2.8 and Jackson dependencies are used
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.6.3</version>
</dependency>
If I send json request with invalid fields then it is accepting as a valid request. But it should give the bad request as response. For example: If I have class
public class Student{
private String id;
private String name;
}
If send valid corresponding json request it should be like
{
"id": "123",
"name": "test"
}
But even if I send json request with invalid fields like below it is still accepting.
{
"id": "123",
"name": "test",
"anyinvalidkey": "test"
}
But it should give the bad request as response
Easy annotation driven solution. In a @Configuration:
This is happening because the
HttpMessageConverter
provided by the earlier versions of spring were usingObjectMapper
default configuration. But the newer versions of spring useJackson2ObjectMapperBulider
which hasDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
property set to false by default. (Reference link). You can solve this issue by adding the following in your applicationContext.xml:An annotation based solution to the based on the answer from Aarya can done in the following way:
@Aarya's answer did not work for me right out of box, but gave me a great hint to look around. So this is what works for me. Given that my Spring is 4.3.12.RELEASE and jackson is 2.9.2