/-- 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中进行注解)