Jackson with JSON: 認識されないフィールド、無視可能としてマークされていません 質問する

Jackson with JSON: 認識されないフィールド、無視可能としてマークされていません 質問する

特定の JSON 文字列を Java オブジェクトに変換する必要があります。JSON の処理には Jackson を使用しています。入力 JSON は制御できません (Web サービスから読み取ります)。入力 JSON は次のとおりです。

{"wrapper":[{"id":"13","name":"Fred"}]}

簡略化した使用例を以下に示します。

private void tryReading() {
    String jsonStr = "{\"wrapper\"\:[{\"id\":\"13\",\"name\":\"Fred\"}]}";
    ObjectMapper mapper = new ObjectMapper();  
    Wrapper wrapper = null;
    try {
        wrapper = mapper.readValue(jsonStr , Wrapper.class);
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("wrapper = " + wrapper);
}

私のエンティティ クラスは次のとおりです。

public Class Student { 
    private String name;
    private String id;
    //getters & setters for name & id here
}

私の Wrapper クラスは基本的に、生徒のリストを取得するためのコンテナ オブジェクトです。

public Class Wrapper {
    private List<Student> students;
    //getters & setters here
}

このエラーが繰り返し発生し、「wrapper」が返されますnull。何が足りないのかわかりません。誰か助けてくれませんか?

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: 
    Unrecognized field "wrapper" (Class Wrapper), not marked as ignorable
 at [Source: java.io.StringReader@1198891; line: 1, column: 13] 
    (through reference chain: Wrapper["wrapper"])
 at org.codehaus.jackson.map.exc.UnrecognizedPropertyException
    .from(UnrecognizedPropertyException.java:53)

ベストアンサー1

Jackson のクラスレベルのアノテーションを使用できます。

import com.fasterxml.jackson.annotation.JsonIgnoreProperties

@JsonIgnoreProperties
class { ... }

POJO で定義されていないすべてのプロパティを無視します。JSON でいくつかのプロパティを探しているだけで、マッピング全体を記述したくない場合に非常に便利です。詳細については、ジャクソンのウェブサイト宣言されていないプロパティを無視したい場合は、次のように記述します。

@JsonIgnoreProperties(ignoreUnknown = true)

おすすめ記事