2020-06-02 18:20
@halason 确实有问题,原因是你的套嵌调用 JFinalJson.toJson() 的用法,在第二次进入 toJson 方法时,重用了 ThreadLocal 中的 JsonResult
这种问题应该是十分罕见的,你先通过继承 JFinalJson 来解决一下:
public class MyJFinalJson extends JFinalJson {
@Override
@SuppressWarnings({"rawtypes", "unchecked"})
public String toJson(Object object) {
if (object == null) {
return "null";
}
JsonResult ret = TL.get();
if (ret.length() > 0) {
JsonResult jsonResult = new JsonResult();
// 优先使用对象级的属性 datePattern, 然后才是全局性的 defaultDatePattern
String dp = datePattern != null ? datePattern : getDefaultDatePattern();
jsonResult.init(dp, timestampPattern);
ToJson toJson = kit.getToJson(object);
toJson.toJson(object, convertDepth, jsonResult);
String jsonString = jsonResult.toString();
jsonResult.clear();
return jsonString;
}
try {
// 优先使用对象级的属性 datePattern, 然后才是全局性的 defaultDatePattern
String dp = datePattern != null ? datePattern : getDefaultDatePattern();
ret.init(dp, timestampPattern);
ToJson toJson = kit.getToJson(object);
toJson.toJson(object, convertDepth, ret);
return ret.toString();
}
finally {
ret.clear();
}
}
}
通过上面的方式扩展以后,再配置一下就好:
me.setJsonFactory(() -> new MyJFinalJson());
2020-06-02 13:12
@路遥_美好人生 超着年轻,一定要去北、上、广、深、杭这些大城市去工作,小地方的机会要少得多
如果是南方人,就不要去北京,那边的环境太干燥,空气质量也很差,南方人会不太适应
以你目前的技术水平完全可以找一个很好的工作,要尽早参与到工作中来,不要等到学会了游泳才下水
以你当前的技术,除了前面讲的工作以外,你要更关注做产品,因为技术永远只是手段,用技术实现目标才是根本目的
2020-06-01 21:41
@路遥_美好人生 代码质量、结构完全不像是毕业两年的同学写的,再过两年,难以想象发展到何种高度
在技术好的同时,刻意培养些商业眼光或者商业敏感度,早日实现财富自由
2020-06-01 21:23
@tyroxyz 可能是你数据库配置的问题,这个警告信息与你自己的代码应该没啥关系
jfinal 也不会输出这类信息
2020-06-01 17:43
@lyh061619 这个优化是非常值得的,因为现在越来越多的 jfinal 项目是当成 json server 端来使用的
性能大幅提升,用户体验更好。官方新增的字段名转驼峰支持,对于使用下划线 mysql 字段以及 oracle 数据库是很大的福音