【问题标题】:GSON.toJson(new RuntimeException()) throws StackOverflowErrorGSON.toJson(new RuntimeException()) 抛出 StackOverflowError
【发布时间】:2018-07-10 09:27:43
【问题描述】:

我的应用程序抛出 StackOverflowError。发现我们的应用程序以 JSON 的形式记录了异常,并且有以下代码。

GSON.toJson(object) //here object can be my application exception or any runtime exception

令我惊讶的是,GSON.toJson 抛出 StackOverflowError。

尝试以下设置进行验证:

public static void main(String[] args) {
    Gson GSON = new Gson();
    GSON.toJson(new NullPointerException());
  }

堆栈跟踪:

Exception in thread "main" java.lang.StackOverflowError
    at com.google.gson.stream.JsonWriter.string(JsonWriter.java:519)
    at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:387)
    at com.google.gson.stream.JsonWriter.beginObject(JsonWriter.java:300)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:190)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)

有人能告诉我为什么我不能得到任何异常的 JSON 吗?

注意:这只发生在我们的应用程序中

【问题讨论】:

  • 这是由于循环引用,请参阅此答案:stackoverflow.com/a/8199566/2257172
  • GSON an Java Throwable的可能重复
  • 谢谢 我没有看到帖子。无论如何,我在新项目中没有收到此错误,在 Gson 2.6.1 中发现此错误不会弹出。我之前使用的是 2.2.2

标签: java exception gson


【解决方案1】:

升级到 Gson 2.6.1 版本解决了问题

【讨论】:

    猜你喜欢
    • 2012-04-29
    • 2017-09-10
    • 2015-04-28
    • 2015-10-28
    • 1970-01-01
    • 2013-01-12
    • 2015-01-25
    • 2023-03-24
    • 2023-03-10
    相关资源
    最近更新 更多