我有一个看起来像这样的 json 文件:
{
"ANIMALS": {
"TYPE": "MAMMAL",
"COLOR": "BLACK",
"HEIGHT": "45",
}
}
但我得到属性未找到错误。如果我将其更改为动物(小写)。它工作正常。谁能建议我这个示例 json 文件的模型类,它将被正确解析。
根据 Deepak 的回答,根据您配置 Jackson 的方式,您可能需要将@JsonProperty
getter 和 setter 放在 getter 和 setter 上而不是属性上,否则您可能会在生成的 JSON 中获得重复的属性。
例子
@JsonProperty("ANIMALS")
private string animals;
结果是...{animals:"foo",ANIMALS:"foo"}
private string animals;
@JsonProperty("ANIMALS")
public String getAnimals(){...}
结果是...{ANIMALS:"foo"}
您应该为您的案例实施新的命名策略:
class UpperCaseNamingStrategy extends PropertyNamingStrategy.PropertyNamingStrategyBase {
private static final long serialVersionUID = 1L;
@Override
public String translate(String arg0) {
return arg0.toUpperCase();
}
}
之后,配置ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(new UpperCaseNamingStrategy());
另见@JsonProperty
注解。
谢谢我使用@JsonProperty 注释解决了这个问题
@JsonProperty("ANIMALS")
private string animals;
如果您不生成 JSON(序列化),但您想使用对象而不必关心大小写。
您可以收到 Animal 或 AnMal :
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);