开发者社区> 问答> 正文

Model进行json的序列化与反序列化问题?报错

由于业务需求,我想要在程序里把model序列化成json,然后能再序列化回来。

我现在是调用model.toJson()方法得到字符串,反序列化就把字符串用json工具反序列化成Map,然后调用model.setAttrs(map)。

但是,因为这样出现了一些问题。比如Date类型的属性,反序列化回来的时候成字符串了,调用model.getDate()会报错。long类型也是,反序列化回来成了int,调用model.getLong()会有类型转换错误。


展开
收起
爱吃鱼的程序员 2020-06-14 19:01:48 804 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    我没用过java,但是对于这种高级语言序列化成json以后,反序列化如果想还原成原来的数据类型,比如原来是浮点类型float、double、decimal,到js里面实际只有一种浮点类型,还有比如一些属性是你的自定义类型是enum,序列化的时候想直接转换成string。在反序列化的时候,很可能会出现精度丢失或者干脆就是转换失败,比较合适的方案就是,采用类似c#attribute的方式,在反序列化的时候提供不同的converter来反序列化某些属性。c#里面有款开源的json框架可以帮到你http://json.codeplex.com/

       json反序列回Model,需要先使用TableMapping.me().getTable(modelClass)得到model各属性的类型,针对类型进行精确转换,写个工具类搞定,jfinal未来考虑添加此功能,楼主要是提前实现了,可以先分享出来。我正打算这么做!现在开发进度卡住了,我必须得先写个工具类搞定。弄好了分享。
    2020-06-14 19:02:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载