web-dev-qa-db-ja.com

Jackson Json型マッピング内部クラス

私はJSONとして渡されるオブジェクトの内部クラス型を作成しようとしていますが、ここやジャクソンのサイトでたくさん読んでいますが、他の誰かがポインタを持っている場合は正しい組み合わせを取得できないようです彼らは大歓迎です。以下にスニペットを投稿し、すべてのゲッターとセッターを削除しましたが、投稿が必要だとは思いませんでした。 Jackson 2.2を使用しています。

私が逆シリアル化しようとしているクラス:

public class Settings {
  private int offset;
  private int limit;
  private String type;
  private Map<String, Criteria> criteria;

  public class Criteria {
    private String restriction;
    private Object value;
  }
}

逆シリアル化に使用しているコード:

ObjectMapper om = new ObjectMapper();
TypeFactory tf = om.getTypeFactory();
JavaType map = tf.constructMapLikeType( Map.class, String.class, Criteria.class );
JavaType type = typeFactory.constructType( Settings.class, map );
Settings settings = om.readValue( entity, type );

私のJSONテストデータ:

{ "type": "org.json.Car", "criteria": { "restriction": "eq", "value": "bmw" } }
21
ars265

可能であれば、人生をシンプルにし、Settingsクラスの参照を使用して、内部クラスを通常のクラスに移動します。そして、ジャクソンを使用してマーシャリングを行います。クラスを作成する方法は次のとおりです。

public class Settings {
  private int offset;
  private int limit;
  private String type;
  private Map<String, Criteria> criteria;
  private Criteria criteria;
}


 class Criteria {
    private String restriction;
    private Object value;
  }
14
Juned Ahsan

正しい答えは、内部クラスの静的キーワードが欠落しているということです。

「静的」キーワードがあることを確認してください。

読む http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html

3分かかりますが、その日の残りの時間は幸せになります。

61
redochka