I have a json file which looks like this:
{
"ANIMALS": {
"TYPE": "MAMMAL",
"COLOR": "BLACK",
"HEIGHT": "45",
}
}
But I get property not found error. If I change it to animals(lowercase). it works fine. Can anyone suggest me the model class for this sample json file which will get parsed correctly.
You should implement new naming strategy for your case:
class LowerCaseNamingStrategy extends LowerCaseWithUnderscoresStrategy {
private static final long serialVersionUID = 1L;
@Override
public String translate(String arg0) {
return arg0.toUpperCase();
}
}
After that, configure ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(new LowerCaseNamingStrategy());
See also @JsonProperty
annotation.
- Change field case with an ObjectMapper
Building off of Deepak's answer, depending on how you have Jackson configured, you may need to put the @JsonProperty
on the getters & setters instead of the property or you might get duplicate properties in the resulting JSON.
Example
@JsonProperty("ANIMALS")
private string animals;
Results in...{animals:"foo",ANIMALS:"foo"}
private string animals;
@JsonProperty("ANIMALS")
public String getAnimals(){...}
Results in...{ANIMALS:"foo"}
Thanks I solved this issue using @JsonProperty annotation
@JsonProperty("ANIMALS")
private string animals;
If you are not generating the JSON (serialisation), but you want to consume an object without having to care about the case.
You can receive Animal or AniMal :
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);