最近公司有个新项目,一开始主键是uuid varchar,后来采用bigint,但是在调试时发现18位的Long型数据,在前端js解析时丢失了两位。
前提:使用JFinalJson解析器,很好用,不想替换为fastjson、Jackson
后端输出Long为字符串
后端输出Long为String处理方法:重写JFinalJsonFactory、JFinalJson,这里主要是改写JFinalJson中的toJson方法,增加if(value instanceof Long)
return "\"" + value.toString() + "\"";
这样就解决了Long型输出为String
前端提交json中的String转为Long:
//获取前端提交的jsonMap map = JSON.parseObject(HttpKit.readData(getRequest()), Map.class);
// 转为modelUser user = new User()._setAttrs(map);
// 重写._setAttrs方法,判断_setAttrs中的map参数是否为model数据,并验证数据类型是否为Long,是则进行转为String为Longpublic M _setAttrs(Map attrs) {
Map attrsNew = new HashMap<>();
Table table = getTable();
Class> clases = null;
for (String key : attrs.keySet())