8

次のようなjsonファイルがあります。

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

    }
}

しかし、プロパティが見つからないというエラーが発生します。動物(小文字)に変更すると。それは正常に動作します。正しく解析されるこのサンプル json ファイルのモデル クラスを教えてください。

4

4 に答える 4

13

Jackson の設定方法に応じて、Deepak の回答に基づいて構築すると、プロパティの代わりに getter と setter を配置する必要がある@JsonPropertyか、結果の JSON でプロパティが重複する可能性があります。

 @JsonProperty("ANIMALS")
 private string animals;

結果は...{animals:"foo",ANIMALS:"foo"}

 private string animals;

 @JsonProperty("ANIMALS")
 public String getAnimals(){...}

結果は...{ANIMALS:"foo"}

于 2015-10-01T15:27:19.897 に答える
9

ケースに新しい命名戦略を実装する必要があります。

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注釈も参照してください。

于 2013-05-22T07:18:19.197 に答える
3

@JsonProperty アノテーションを使用してこの問題を解決しました。

    @JsonProperty("ANIMALS")
    private string animals;
于 2013-05-22T07:21:21.667 に答える
1

JSON (シリアル化) を生成していないが、大文字と小文字を気にせずにオブジェクトを使用したい場合。

アニマルまたはアニマルを受け取ることができます:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);    
于 2019-07-22T20:41:56.677 に答える