Case insensitive JSON to POJO mapping without changing the POJO Case insensitive JSON to POJO mapping without changing the POJO java java

Case insensitive JSON to POJO mapping without changing the POJO


This behaviour was introduced in Jackson 2.5.0. You can configure the mapper to be case insensitive using MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES.

For example :

ObjectMapper mapper = new ObjectMapper();mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);


You can solve this problem by configuring the mapper, as described by the @Nicolas Riousset.

In addition, since version Jackson 2.9 you can do the same using annotation @JsonFormat(with = JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES) over a field or class, which is a more flexible option.

@JsonFormat(with = JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)private String firstName;


I had the same problem and couldn't find a global way of solving this. However you can have 2 setters per property to achieve this:

@JsonSetter("FIRSTNAME")public void setFirstNameCaps(String firstName) {    this.firstName = firstName;}@JsonSetter("firstName")public void setFirstName(String firstName) {    this.firstName = firstName;}

Not elegant but will work for both upper and lower case json fields. You can also try the solution mentioned here but this might have a performance overhead