4

例外またはビジネス オブジェクトのいずれかを受け取る単純なリターン クラスがあります。REST Web サービス メソッドが例外をスローすると、それをキャッチして、応答に例外を設定します。そうでない場合は、応答に戻り値を設定し、シリアル化します。

私の場合、サービス例外の 1 つをラップする InvocationTargetError を取得しています。これを戻りクラスの例外に設定し、次のスタック トレースを取得します。

java.lang.StackOverflowError
com.google.gson.reflect.TypeToken.hashCode(TypeToken.java:280)
java.util.HashMap.get(HashMap.java:300)
java.util.Collections$SynchronizedMap.get(Collections.java:1975)
com.google.gson.Gson.getAdapter(Gson.java:337)
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:55)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
and so on...

誰にもアイデアはありますか?これは Gson 2.2.2 のバグのようです。

4

2 に答える 2

6

Gson は、シリアル化されたデータの循環参照を処理できません。持っている可能性があります。それを修正すると、問題が修正されました。

于 2012-11-21T00:29:43.790 に答える
3

Googleコードサイトでこれに関する問題を作成しました。

http://code.google.com/p/google-gson/issues/detail?id=488

于 2012-11-20T16:51:24.520 に答える