java - Gson StackOverflowError

标签 java json gson

我有一个简单的返回类,它接受异常或我们的业务对象之一。如果 REST Web 服务方法抛出异常,它会捕获它并在响应中设置异常。如果不是,它会在响应中设置返回值并将其序列化。

在我的例子中,我得到了一个 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 中的错误。

最佳答案

Gson 无法处理序列化数据中的循环引用。很有可能你有一个。解决这个问题,您的问题就解决了。

关于java - Gson StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13476788/

相关文章:

c# - 以编程方式从 JSON 数据生成 JSON 模式

java - 使用 Java 8 为 Gson 编写序列化程序

包含数组的 JavaScript map 变成包含 map 的 map

java - java中的浅克隆: String and Object showing different behaviours

java - 检查数组列表中的空字段

python - curl with POST 不工作,request.POST 为空

ios - 解析Json获取一个NSArray中的所有内容

java - 将 Key 值添加到 GSON.toJSON 生成的 Json 字符串中

java - 在不使用 Excel 的情况下为任意长度的字符串设置图表格式的最佳方法

java - 即使在排除单元测试之后,单元测试也会在集成测试阶段执行