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

时间:2013-05-22 05:19:19

标签: android json parsing jackson

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

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

    }
}

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

4 个答案:

答案 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);