2

Jackson を使用するクライアントと通信 (JSON) するには、Grails アプリが必要です。デフォルトでは、Grails は生成された json に「クラス」を含めます。一方、デフォルトの JacksonObjectMapperは「クラス」を認識せず、エラーをスローします。

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="class")使用されている各 POJO クラスを追加することで、解決策を見つけました。

しかし、私はそのアプローチを好みません。これで、私の POJO は Jackson の jar に依存するようになるからです。別の簡単な代替手段はありますか?

から把握しようとしてobjectMapper.getSerializationConfig(). ...いましたが、その注釈を置き換える代替手段が見つかりませんでした。

ありがとう

4

1 に答える 1

2

多態的なインスタンス化に型情報を使用していますか、それともその情報を無視していますか? おそらく@JsonIgnoreProperties({"class"})クラスで代わりに使用できます。

クラスに注釈を追加したくない場合は、ミックスイン メカニズムを使用できます。もちろん、クラスを制御する場合は、注釈をクラスに直接追加する方がはるかに簡単ですが。

mapper.addMixInAnnotations(YourClass.class, TypeInfoMixIn.class);
mapper.addMixInAnnotations(YourSecondClass.class, TypeInfoMixIn.class);
// etc.

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="class")
public class TypeInfoMixIn {}
于 2013-04-02T14:27:58.887 に答える