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

最近做ajax获取数据传送到前端,遇到了这个问题,从分析问题的角度来解决问题,学习编程找错思维。

  1. 从提示的表面意思看
    在层次结构中存在一个循环。
  2. 从出错对象来看
    net.sf.json.JSONException
  3. 分析出错对象的行为(所做的事)
    很简单这个对象就是把list转换成JSONArray(相当于bean转换成json,再json转换成JSONArray)。那就是对象行为出错,也就是转换出错。结合提示1,存在循环(哪个环节循环呢,哦,bean转换成json,把属性键值对,存在循环,说明属性还需要进行属性键值对,那这个属性就是对象了,哈哈,就是外部关联的对象,解决不了)。直接过滤这个对象属性就好了。代码如下:
@RequestMapping(value = "queryAreasByCity", produces =  {"text/html;charset=utf-8"})
    @ResponseBody
    public String queryAreaByCityName(@RequestParam("cName") String cName){
        City city = cityService.queryCityByCName(cName);
        List<Area> areas = city.getAreas();
        for (Area area : areas) {
            System.out.println(area.getaName());
        }
        // 转换为JSONArray类型
        JsonConfig config = new JsonConfig();
        config.setExcludes(new String[]{"city", "enterprises"});//对就是这里
        JSONArray jsonArray = JSONArray.fromObject(areas, config);
        String json = jsonArray.toString();
        return json;
    }
发布了39 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/a1920135141/article/details/100167718