SSH中list转换json报错问题

在最近项目中遇到好多问题,其中一个就是使用ajax请求时在Action中list转json报错,我们来看一下业务场景:
UserAction.java

//之前的方法
public String custAjax() throws IOException{
        //获取list
        List<User> list = cs.find();
        //调用jar包中的方法
        String json  = JSONArray.fromObject(list).toString();
        ServletActionContext.getResponse().setContentType("application/json;charset=utf-8");
        ServletActionContext.getResponse().getWriter().write(json);

        //不需要进行结果处理
        return null;
    }

我们知道这种方法在一般情况下没问题,但是如果user中有外键,那么这种转换就会进入死循环状态,也就是会直接报错,所以解决方法如下:

public String custAjax() throws IOException{
        List<Customer> list = cs.find();
        //对外键进行过滤,注意是使用String arg1这个参数
        JsonConfig config = new JsonConfig();
        config.setJsonPropertyFilter(new PropertyFilter() {
            @Override
            public boolean apply(Object arg0, String arg1, Object arg2) {
                //这个cust_level 是个外键,把他过滤就行了
                if( arg1.equals("cust_level")) return true;
                return false;
            }
        });
        String json  = JSONArray.fromObject(list,config).toString();
        ServletActionContext.getResponse().setContentType("application/json;charset=utf-8");
        ServletActionContext.getResponse().getWriter().write(json);

        //不需要进行结果处理
        return null;
    }

这样就解决了转json问题,以后还要多总结错误,希望对大家有帮助。

猜你喜欢

转载自blog.csdn.net/weixin_38008100/article/details/81910471