JFinal

登录 注册

关于json值为null的处理

public void jdxx() {
    String zjhm = getPara("zjhm");
    List<Record> records = service.getJdxxInfoByZjhm(zjhm);
    renderJson(records);
}

若records中有字段内容为null,则返回:{name:"张三", gender:1, address: null },

而所期待的是像fastjson一样的返回:{name:"张三", gender:1}。

请问这个该怎么做?是否有像fastjson一样的可以配置:

Fastjson的SerializerFeature序列化属性:

QuoteFieldNames———-输出key时是否使用双引号,默认为true 
WriteMapNullValue——–是否输出值为null的字段,默认为false 
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null 
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null 
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null 
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null

评论

  • 12-16 16:22
    继承JFinalJson,覆盖原来的实现,再写相应的工厂类,configConstant的时候设置成新的工厂类。。
  • 12-16 17:55
    楼上正解.
    自建类继承JFinalJson,重写toJson.
    return JSON.parse((super.toJson(object))).toString(); //JSON为fastjson,这里可自行定义SerializerFeature
    自建工厂类实现IJsonFactory接口.
    配置常量时:
    me.setJsonFactory(new YourFastJsonFactory());
  • 12-16 21:20
    @PopezLotado 实际上我也是这样弄的:JSON.parseObject(JFinalJson.getJson().toJson(obj)).toJSONString()。
    我是想着看看jfinal未来的版本中能否增加这一特性,自己来控制该怎么输出。
    @Jfinal
  • 12-17 21:39
    有个简单的办法是在转 json 前调用一次 model与record的 removeNullValues() 方法
  • 12-17 23:44
    @JFinal 返回结果是个List,岂不是要都遍历一遍?
  • 发送