私はJerseyを使用してエンティティをシリアル化しています。ジャクソン1.9から2.0に移行しています。私はthis guideに続き、最初はすべてが簡単にうまくいくように思えました。Jerseyの1.9からJackson 2.0へのアップグレードが動作しない
しかし、私の(マイグレーションされた)ジャクソン2.0注釈を無視して、ジャクソン1.9がまだ私の応答をシリアル化するために使用されていることを詳しく見ています。あなたが、私は以下のコードで使用していたの注釈を参照することができます
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public abstract class IdEntity {
@Id
@JsonDeserialize(using = ObjectIdJsonDeserializer.class)
protected ObjectId id;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonSerialize(using = ObjectIdJsonSerializer.class)
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
@JsonIgnore
public String getIdAsString() {
return id == null ? "" : id.toString();
}
マイ@JsonIgnoreゲッターは、シリアライズなっている、と私ObjectIdJsonSerializerはObjectIDフィールドのために使用されていません。
デバッグでは、使用されているObjectMapperが1.9以降であることがわかります。
私はすべての直接的な依存関係をJackson 1.9に削除し、jersey-jsonへの除外を追加して、Jackson 1.9を引き抜かないようにしました。しかし、私はJacksonの1.9が必要なSpring AMQPも使用しているため、(依存関係管理のすべてのcodehaus.jacksonに除外を加えることで)完全に取り除くことはできません。
これを管理する方法はありますか?誰も遭遇した/同様の問題を解決しましたか? JerseyにJackson 2.0を使用させるにはどうすればよいですか?
いいえ、私はMavenを使用していると私は、それぞれのfasterxmlバージョンとすべてorg.codehausの成果物を置き換えます。私は[このガイド](http://www.cowtowncoder.com/blog/archives/2012/04/entry_469.html)を使って移行を行った。 – Eyal
私はそれを理解しました。私が言っていることはおそらく別のプロジェクト(Jersey?)がJackson 1.xを推移的な依存関係としてクラスパスに追加し、おそらくJAX-RSプロバイダとして使用されるこのバージョンであるということです。私が正しくリコールすれば、プロジェクトとMavenとの依存関係を調べることが可能です。それを使うべきです。 –
ジャージーは古いジャクソンの依存関係をもたらしますが、コンパイル時と思われるので、それが問題なのかどうかはわかりません。 – Eyal