Model class for Jackson Parser to parse Uppercase

2020-04-03 17:20发布

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.

4条回答
劫难
2楼-- · 2020-04-03 17:25

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.

查看更多
我欲成王,谁敢阻挡
3楼-- · 2020-04-03 17:26

Thanks I solved this issue using @JsonProperty annotation

    @JsonProperty("ANIMALS")
    private string animals;
查看更多
相关推荐>>
4楼-- · 2020-04-03 17:29

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"}

查看更多
Explosion°爆炸
5楼-- · 2020-04-03 17:43

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);    
查看更多
登录 后发表回答