renderJson时如何能过滤掉model的自定义方法

发现在renderJson(model)时,model中的无参方法也会执行,比如:

//Model:栏目
public class Channel extends BaseChannel<Channel>
    public static final Channel dao = new Channel().dao();
    public List<Content> getContents(){
        //...
    }
}
//Controller:栏目
public class ChannelController extends Controller{
    public void getChannelJson(){
        Channel channel = Channel.dao.findById("xxx");
        renderJson(channel);
    }
}

本意是返回Channel数据,但发现还执行了Channel.getContents(),如果文章条数非常多,将会严重影响速度

这种情况该怎么处理?

是不在Model中编写无参方法,还是扩展renderJson,增加filter

评论区

netwild

2017-06-12 09:50

@JFinal 呼叫老大

JFinal

2017-06-12 10:37

转 json 的时候使用 JFinalJson 即可:
me.setJsonFactory(new MixedJsonFactory())

netwild

2017-06-12 11:08

@JFinal 原来如此,我默认使用的是fastjson

JFinal

2017-06-12 11:16

@netwild fastjson 会自动识别你的所有 getter 方法,如果你希望大多数情况是这种行为,也可以多种 json 实现混合使用,例如上面的情况你可以使用:
renderJson(JFinalJson.getJson().toJson(model));

netwild

2017-06-12 13:39

@JFinal 明白了,这样就灵活了!

热门反馈

扫码入社