net.sf.json.JSONException: There is a cycle in the hierarchy!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了net.sf.json.JSONException: There is a cycle in the hierarchy!相关的知识,希望对你有一定的参考价值。

参考技术A

今天在使用 json-lib.jar 包 将List<T> 转换为Json数据时出现
net.sf.json.JSONException: There is a cycle in the hierarchy! 错误,通过查询资料得知这是因为实体类有含有外键,无法转换,通过 jsonconfig 的 setJsonPropertyFilter() 方法可以在转换json时将外键过滤掉这样就不会有这些问题了。具体做法如下

其中arg1未实体类中的外键属性名。

这次是第一次自己弄项目,一个比较小的查询,就想着用struts2和hibernate来进行实现,以前都是大神搭好的。这次只是引入了json-lib.jar包,然后一到转换时直接不报错执行 finally 方法,真是一脸懵逼,这个异常```

这样就可以捕捉到原因了,事实证明是少引入了json-lib的那几个依赖包。

这些均需要。

jsonObject转换出错


net.sf.json.JSONException: Object is null

2019-07-23 18:44:45.503  WARN 24317 --- [nio-8082-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Object is null; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Object is null (through reference chain: com.shanyutech.mingyu.utils.AjaxResult["oData"]->net.sf.json.JSONArray[0]->net.sf.json.JSONObject["consumeId"]->net.sf.json.JSONNull["empty"])]

其实已经转换已经成功了,可以打印出结果,但是使用new AjaxResult()的时候jsonArray中的有些数据是null,一个name一个value,name是String,value是Object,而且没有任何关联项,就是做为值处理的。最后把输出的结果一个一个核对,才发现有的value是null,这样就报错的,把为null的值进行修改,一切ok了,这真是,唉。

这个问题的确比较坑爹,我也遇到了。 别用net.sf.json.JSONArray或JSONObject。 用com.alibaba.fastjson.JSONArray或JSONObject就行了, 完美解决。


以上是关于net.sf.json.JSONException: There is a cycle in the hierarchy!的主要内容,如果未能解决你的问题,请参考以下文章

net.sf.json.JSONException: There is a cycle in the hierarchy!

ajax请求json数据异常:nested exception is net.sf.json.JSONException: java.lang.reflect.InvocationTargetExce

json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

json格式错误:net.sf.json.JSONException: A JSONObject text must begin with '' at character 1 of 2

net.sf.json.JSONException: There is a cycle in the hierarchy!

net.sf.json.JSONException: There is a cycle in the hierarchy!错误解决方案