/-- Encapsulated exception ------------\
java.lang.StackOverflowError
at com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(SerializeWriter.java:758)
at com.alibaba.fastjson.serializer.SerializeWriter.writeFieldName(SerializeWriter.java:1690)
at com.alibaba.fastjson.serializer.SerializeWriter.writeFieldName(SerializeWriter.java:1672)
at Serializer_1.write1(Unknown Source)
at Serializer_1.write(Unknown Source)
at com.alibaba.fastjson.serializer.CollectionSerializer.write(CollectionSerializer.java:96)
at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:403)
at Serializer_2.write1(Unknown Source)
java.lang.StackOverflowError
at com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(SerializeWriter.java:758)
at com.alibaba.fastjson.serializer.SerializeWriter.writeFieldName(SerializeWriter.java:1690)
at com.alibaba.fastjson.serializer.SerializeWriter.writeFieldName(SerializeWriter.java:1672)
at Serializer_1.write1(Unknown Source)
at Serializer_1.write(Unknown Source)
at com.alibaba.fastjson.serializer.CollectionSerializer.write(CollectionSerializer.java:96)
at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:403)
at Serializer_2.write1(Unknown Source)
at Serializer_2.write(Unknown Source)
ssh框架中在一对多的配置中将数据转化为json字符串出现了上面的异常。
* fastjson默认的情况下是进行循环检测的,去除掉死循环调用的方式
* 可以使用JSON.toJSONString(p,SerializerFeature.DisableCircularReferenceDetect) 去除循环检测,但是就会出现死循环的效果
* 最后可以使用注解:@JSONField(serialize=false)对指定的属性不转换成json(在javabean中进行注解)
本文探讨了在SSH框架中使用FastJSON进行JSON序列化时遇到的StackOverflowError异常,并提供了解决方案,包括禁用循环检测及使用注解排除特定属性。
3207

被折叠的 条评论
为什么被折叠?



