今天在项目中,使用GSON对某个类进行toJson操作,发现栈溢出异常。
java.lang.StackOverflowError: null at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:402) ~[gson-2.8.2.jar:?] at com.google.gson.stream.JsonWriter.beginObject(JsonWriter.java:307) ~[gson-2.8.2.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:238) ~[gson-2.8.2.jar:?] at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.2.jar:?]
分析了一下异常出现的原因:
在java中,对象引用成环问题,可以被jvm自动处理,但是将java对象转成json格式时,由于转换工具不能自行切断环,会导致无限解析最终会导致栈溢出错误。 解决办法:使用JackSon