Jackson Parser的模型类解析大写属性

Dee*_*ati 7 parsing android json jackson

我有一个json文件,如下所示:

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

    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到属性未找到错误.如果我把它改成动物(小写).它工作正常.任何人都可以建议我这个样本json文件的模型类,它将被正确解析.

Sne*_*kse 12

基于Deepak的答案,取决于你如何配置Jackson,你可能需要将@JsonPropertygetter和setter放在getter和setter上,或者你可能会在生成的JSON中获得重复的属性.

 @JsonProperty("ANIMALS")
 private string animals;
Run Code Online (Sandbox Code Playgroud)

结果是...{animals:"foo",ANIMALS:"foo"}

 private string animals;

 @JsonProperty("ANIMALS")
 public String getAnimals(){...}
Run Code Online (Sandbox Code Playgroud)

结果是...{ANIMALS:"foo"}


Mic*_*ber 7

您应该为您的案例实施新的命名策略:

class LowerCaseNamingStrategy extends LowerCaseWithUnderscoresStrategy {

    private static final long serialVersionUID = 1L;

    @Override
    public String translate(String arg0) {
        return arg0.toUpperCase();
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,配置 ObjectMapper

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(new LowerCaseNamingStrategy());
Run Code Online (Sandbox Code Playgroud)

另请参见@JsonProperty注释.

  • 又是我!刚刚发现,从 Jackson 2.12(2020 年 11 月)开始,“PropertyNamingStrategy.PropertyNamingStrategyBase”已被弃用。需要使用 `PropertyNamingStrategies.NamingBase` 来代替,它基本上是相同的 - 但不推荐使用:) (2认同)