me.setJsonFactory(FastJsonFactory.me())?

@JFinal

在MainConfig里配置了

me.setJsonFactory(FastJsonFactory.me());

然后配置使用驼峰命名record和model的字段

JFinalJson.setModelAndRecordFieldNameConverter(fieldName -> {

return StrKit.toCamelCase(fieldName, true);

});

JFinalJson.setSkipNullValueField(true);

但没起作用。如果把上面那个setJsonFactory去掉,就可以。

是哪里没弄对吗?

评论区

JFinal

2020-07-07 15:59

me.setJsonFactory(FastJsonFactory.me()) 这行配置是在配置 FastJson.java

而 JFinalJson.setModelAndRecordFieldNameConverter(...) 是在配置 JFinalJson.java

两者是在针对不同的东西进行配置,所以不生效。

由于 FastJson 转换是针对 getter 方法,所以,而 getter 方法通常已经是驼峰的,所以,你只需要对 model 生成 getter 方法即可

生成器在首页右侧下载 jfinal_demo_for_maven.zip 中有,直接用上即可

zzutligang

2020-07-07 17:55

@JFinal
我之前就是用me.setJsonFactory(FastJsonFactory.me()) ,然后Model通过生成器生成驼峰命名了。但Record是没有转驼峰的,4.9出了JFinalJson.setModelAndRecordFieldNameConverter(...),我很激动,终于Record也可以转驼峰了。结果就发现这个小矛盾了。Record转驼峰是我急需要的,所以,就只能把me.setJsonFactory(FastJsonFactory.me()) 这个玩意儿取消掉了。能不能让JFinalJson.setModelAndRecordFieldNameConverter(...) 根据是是使用哪个json工厂而对应适配呢?或则变通一下?

JFinal

2020-07-07 19:09

@zzutligang 4.9 版本新出的 JFinalJson.setModelAndRecordFieldNameConverter(...) 只针对 JFinalJson

如果要用这个功能,不能配置 me.setJsonFactory(FastJsonFactory.me())

zzutligang

2020-07-08 09:09

@JFinal
目前就是这么处理的。想波总确认一下:当初配置me.setJsonFactory(FastJsonFactory.me())也就是仅仅是可以根据Model的getset方法生成驼峰json字段名的功能的吧,也没其他的特别用处吧。现在有JFinalJson.setModelAndRecordFieldNameConverter(...)这种方式处理驼峰了,那me.setJsonFactory(FastJsonFactory.me())这个方法就没必要了是吧

JFinal

2020-07-08 11:15

@zzutligang 只要是 JFinalJson.setXxx(...) 这种以 JFinalJson 打头的配置方法,全都是只针对 JFinalJson, 不影响 FastJson、Jackson ,各管各的配置

通用配置需要配置:
JsonManager.me().setXxx(...) 这个配置是管所有 json 实现的,注意看文档:
https://jfinal.com/doc/12-2

热门反馈

扫码入社