Model class for Jackson Parser to parse Uppercase properties

后端 未结 4 788
生来不讨喜
生来不讨喜 2021-01-18 02:21

I have a json file which looks like this:

{
    \"ANIMALS\": {
    \"TYPE\": \"MAMMAL\",
    \"COLOR\": \"BLACK\",
    \"HEIGHT\": \"45\",

    }
}


        
相关标签:
4条回答
  • 2021-01-18 03:01

    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);    
    
    0 讨论(0)
  • 2021-01-18 03:06

    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
    0 讨论(0)
  • 2021-01-18 03:08

    Thanks I solved this issue using @JsonProperty annotation

        @JsonProperty("ANIMALS")
        private string animals;
    
    0 讨论(0)
  • 2021-01-18 03:13

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

    0 讨论(0)
提交回复
热议问题