net.sf.json.JSONException: There is a cycle in the hierarchy!错误原因及解决方法

原因:

 

我们把一个对象或者集合转化成一个json字符串的时候,他会遍历每一个字段,当你对象A里面有对象B,对象B里面有对象A的时候,这时候转化的时候就会抛出net.sf.json.JSONException: There is a cycle in the hierarchy!这个异常,这时候需要我们需要写一个过滤器。

解决办法:

customer = customerService.findById(customer.getCust_id());

		// 转成json
		JsonConfig cfg = new JsonConfig();
		// 这里是把关联对象剔除掉
		cfg.setJsonPropertyFilter(new PropertyFilter() {
			public boolean apply(Object source, String name, Object value) {
				if (name.equals("baseDictSource") || name.equals("baseDictIndustry") || name.equals("tbUserinfoRoles")
						|| name.equals("baseDictLevel")) {
					return true;
				} else {
					return false;
				}
			}
		});
		JSONObject jsonObject = JSONObject.fromObject(customer,cfg);
		// System.out.println(jsonArray.toString());
		// 将JSON数据传到页面
		try {
			ServletActionContext.getResponse().setContentType("text/html;charset=UTF-8");
			ServletActionContext.getResponse().getWriter().println(jsonObject.toString());
		} catch (IOException e) {
			e.printStackTrace();
		}

这里就是定义了一个过滤器,过滤掉了名称为nbaseDictSource,baseDictIndustry和tbUserinfoRoles的字段,返回true表示过滤掉这个属性,当然了,这个过滤器自身不会起到任何作用,只有在转化的时候才会用到。

已标记关键词 清除标记
显示报错: ![图片说明](https://img-ask.csdn.net/upload/201705/02/1493697329_940817.png) 源代码: <% /*获取所有业务 */ String url="#url"; String param="#URL"; //地区编号 String html=""; //String temp=""; try{ String result=sendGet(url,param); result=URLDecoder.decode(result); //解析json数据 JSONObject jsonObject=JSONObject.fromObject(result); String info=jsonObject.getString("info"); JSONArray infoArray=JSONArray.fromObject(info); //拼接下面html数据 for(int i=0;i<infoArray.size();i++){ JSONObject oneObject=infoArray.getJSONObject(i); //temp=oneObject.getString("ACCEPT_USER_NAME"); //没有完成的业务就没有完成时间,需要先判断,否则报错: String finish_time=""; if(oneObject.containsKey("FINISH_TIME")){ finish_time="<script type='text/javascript'>showTime('"+oneObject.getString("FINISH_TIME")+"');</script>"; }else{ finish_time="处理中"; } String time_limit=""; if(oneObject.containsKey("TIME_LIMIT")){ time_limit="<script type='text/javascript'>showTime('"+oneObject.getString("TIME_LIMIT")+"');</script>"; }else{ time_limit="-"; } html+="<li><span class='span1'>"+oneObject.getString("RECEIVE_NUMBER")+"</span><span class='span2'><a title='"+oneObject.getString("APPLY_SUBJECT")+"'>"+oneObject.getString("APPLY_SUBJECT")+"</a></span><span class='span4'><a title='"+oneObject.getString("ORG_NAME")+"'>"+oneObject.getString("ORG_NAME")+"</a></span><span class='span4'>"+time_limit+"</span><span class='span4'>"+finish_time+"</span><span class='span3 yellow'>"+oneObject.getString("CURRENT_NODE_NAME")+"</span></li>"; } //out.print(html); }catch(Exception e){ out.print(e.toString()); } %> 麻烦高手看看是啥情况!
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__0809 返回首页