简体   繁体   English

GSON.toJson(new RuntimeException())抛出StackOverflowError

[英]GSON.toJson(new RuntimeException()) throws StackOverflowError

My application was throwing StackOverflowError. 我的应用程序抛出了StackOverflowError。 Found out that our application logs the Exception in form of JSON and had below code. 发现我们的应用程序以JSON形式记录了Exception并且具有以下代码。

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

To my surprise it GSON.toJson throws StackOverflowError. 令我惊讶的是,GSON.toJson抛出了StackOverflowError。

Tried below setup to verify: 尝试通过以下设置进行验证:

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

Stacktrace: 堆栈跟踪:

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)

Can someone tell why I can't get JSON of any exception? 有人可以告诉我为什么我无法获得任何异常的JSON吗?

NOTE: This happens in only our application 注意:这仅在我们的应用程序中发生

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM