我有一个json文件,如下所示:
{
"ANIMALS": {
"TYPE": "MAMMAL",
"COLOR": "BLACK",
"HEIGHT": "45",
}
}
但是我找不到属性错误。如果我把它改成动物(小写)。它工作正常。任何人都可以建议我这个样本json文件的模型类,它将被正确解析。
答案 0 :(得分:12)
根据您配置杰克逊的方式,取决于您的杰克逊配置,您可能需要将@JsonProperty
放在getter& setters而不是属性,或者您可能在生成的JSON中获得重复的属性。
实施例
@JsonProperty("ANIMALS")
private string animals;
结果为... {animals:"foo",ANIMALS:"foo"}
private string animals;
@JsonProperty("ANIMALS")
public String getAnimals(){...}
结果为... {ANIMALS:"foo"}
答案 1 :(得分:7)
您应该为您的案例实施新的命名策略:
class LowerCaseNamingStrategy extends LowerCaseWithUnderscoresStrategy {
private static final long serialVersionUID = 1L;
@Override
public String translate(String arg0) {
return arg0.toUpperCase();
}
}
之后,配置ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(new LowerCaseNamingStrategy());
另请参阅@JsonProperty
注释。
答案 2 :(得分:3)
谢谢我使用@JsonProperty annotation
解决了这个问题 @JsonProperty("ANIMALS")
private string animals;
答案 3 :(得分:1)
如果您没有生成JSON(序列化),但是您想使用一个对象而不必关心大小写。
您可以收到Animal或AniMal:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);