jfinal 给APP传值问题

当前关联数据库为oracle,当获取到数据库的字段值,此字段没值的时候,给前端renderJson()发下去的json,没有此字段,请问有没有解决办法?让字段为空值的时候,传下去的的json也能把此字段带下去

评论区

flyinkeke

2019-09-25 10:41

我记得用fastjson就可以了,me.setJsonFactory(new FastJsonFactory())

江流儿0526

2019-09-25 10:46

@flyinkeke 我现在用的就是这个,你用这个没有这种问题吗?

JFinal

2019-09-25 11:05

@江流儿0526 这是因为这些关联字段没有生成 getter 方法,可以这样处理一下:
String json = JFinalJson.getJson().toJson(数据在此);
renderJson(json);

注意:这么处理是用的 JFinalJson 转换的,所以生成的属性与数据库字段名是一样的,可以配置 activeRecordPlugin.setContainerFactory(new CaseInsensitiveContainerFactory(true)) 将属性名转成小写字线,但下划线仍然是存在的

如果上面的处理方式仍然不满意,建议在最终 model 上手动添加 getter 方法来输出这些关联的数据,注意是在最终 model 上添加,不是在 base model 上添加

JFinal

2019-09-25 11:06

只要了解了 jfinal 转 json 的原因就能灵活做出调整,一定要先看看文档:
https://www.jfinal.com/doc/12-1

江流儿0526

2020-01-08 10:32

@JFinal 大佬,fastjson可以设置fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullListAsEmpty);这几个属性,就可以解决这个问题了,我想问下,jfinal里面可以把这个引进去吗?

JFinal

2020-01-08 10:48

@江流儿0526 参考 com.jfinal.json.FastJson.java 中的下面代码:
SerializeConfig.getGlobalInstance().put(Record.class, new FastJsonRecordSerializer());

再加上 com.jfinal.log 这整个模块下面的东东都是可以扩展的,稍微看看代码

热门反馈

扫码入社