現在、jackson 1.7を使用して、サードパーティのライブラリからオブジェクトを逆シリアル化しようとしています。@JsonCreatorとMixInアノテーションで何が問題になっていますか?
だから私はこのように私のミックスインクラスを使用するために私のObjectMapperを設定します。
が ポイントオブジェクトをインスタンス化する @JsonCreatorとし、ロジックで注釈が付けObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.getDeserializationConfig().addMixInAnnotations(com.vividsolutions.jts.geom.Point.class, MixIn.class);
そして、私のmixinクラス
public class MixIn {
private static final GeometryFactory geometryFactory = GeometryFactoryFactory.getGeometryFactory();
@JsonCreator
public static Point createPoint(@JsonProperty("x")double x, @JsonProperty("y")double y) {
return geometryFactory.createPoint(new Coordinate(x, y));
}}
しかし例外が発生しています
No suitable constructor found for type [simple type, class com.vividsolutions.jts.geom.Point]: can not instantiate from JSON object (need to add/enable type information?)
デバッグは、私のMixInクラスが呼び出されないことを示しています。具体的なクラスにする必要があると思っていましたが、同じ結果でした。
私は間違っていますか?私の設定で何が問題になっていますか?
おかげ
おかげで理にかなっている多く
@JsonIgnoreProperties({"isMilestoneView", "milestoneId"})
クラスレベルアノテーションを使用してみてください、私は私の唯一のオプションは、(:(3つの、より複雑なオブジェクトの周り)_必要なすべてのものを他の属性をシリアル化するためにあることを推測_ターゲットクラスのためにコンストラクタを使用してMixInクラスで使用してください。 – maverickデシリアライズ中にフィールドを除外して終了しました。これ以上不要なので、最後にフィールドを除外しました。 – maverick
これを持つ、または類似のクラスを簡単に直列化できます – loesak