@JFinal 我发现的一个线索是,我的分页代码是常规的select * from goods,他的分页代码是JSON.toJSONString(Goods.dao.paginate(1, 10,"select * ","from goods"));我把这行代码,随便放在login的controller里,然后调试,并且,我在Goods.java,也就是他的model类里,写了另外一个函数,public List getXXxGoodsList(){}方法里面也就写了个select 返回list的代码,我测试发现,只要是方法以get开头,fastJson,就是自动循环调用,Goods.java里的这个getXXxGoodsList函数,里面的SQL代码。我不解的是,我明明让执行的是select * from goods,为啥,跑到goods.java里面执行和它无关的getXXxGoodsList()函数。我在Goods.java里,不出现以get开头的函数,就不会出现死循环。应该是第1个原因,我的goods.java里,有getter函数,里面查询了数据,而且也是返回List,应该是递归了。3Q。看来开发还是,不用fastJson
1:Goods 这个类里面有没有 getter 方法是再次查询了数据库的
2:Goods 内部的对象有无循环关联
总的来说,造成这个错误的原因是被转换的对象之间出现了循环依赖,尤其是上述1中的getter 方法读库,并且依赖关系藏在数据中
上述2中的可能性小些,因为 fastjson 应该对内存中的依赖可以自动处理好