3

私はこのエラーを抱えています:

 com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: Direct self-reference leading to cycle

これがシリアル化される原因となるフィールドを回避しようとしていますが、エラーは修正されていません。@JsonIgnore をゲッター、セッター、属性、およびそれらの可能なすべての組み合わせに配置しようとしました。

ありがとう

-> 編集

com.google.appengine.repackaged.org.codehaus.jackson.annotate.JsonIgnoreProperties をインポートできません。「com.google.appengine.repackaged を使用すると、警告なしにアプリが壊れる可能性があります。」と表示されます。そのため、代わりに org.codehaus.jackson.annotate.JsonIgnoreProperties をインポートします。

例外は、再パッケージ化されたパッケージ (インポートできないもの) でスローされます。それが私の JsonIgnore が機能しない理由ですか??

再度、感謝します。

4

3 に答える 3

3

解決策を見つけました。パッケージ全体を注釈に入れました。

@com.google.appengine.repackaged.org.codehaus.jackson.annotate.JsonIgnoreProperties({"users"})
public class MyClass extends MySuperClass{
    ....
}

この方法では、Eclipse はこのエラーを表示しません。

于 2013-10-30T23:48:24.923 に答える
0

com.google.appengine.repackaged を使用することは、通常、非常に悪い考えです。警告は無視したり回避したりする必要がないからです。代わりに、jackson-core-asl-.jar からの org.codehaus.jackson.annotate.JsonIgnoreProperties クラスを使用する必要があります。

Mavenを使用している場合、このライブラリを追加できます

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>

それ以外の場合は、そこからダウンロードしてください http://mavenhub.com/c/org/codehaus/jackson/annotate/JsonIgnoreProperties/jar

再パッケージ化されたインポートであるクラスが必要な場合は、再パッケージ化された部分を除いてインポートをコピーするだけです (たとえば、この場合は org.codehaus.jackson.annotate.JsonIgnoreProperties)、Google に配置します。そのクラスを使用可能にするために、ビルド パスに追加する必要がある正しい jar が見つかります。

于 2014-01-06T10:12:14.573 に答える