由于业务需求,我想要在程序里把model序列化成json,然后能再序列化回来。
我现在是调用model.toJson()方法得到字符串,反序列化就把字符串用json工具反序列化成Map,然后调用model.setAttrs(map)。
但是,因为这样出现了一些问题。比如Date类型的属性,反序列化回来的时候成字符串了,调用model.getDate()会报错。long类型也是,反序列化回来成了int,调用model.getLong()会有类型转换错误。
我没用过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未来考虑添加此功能,楼主要是提前实现了,可以先分享出来。我正打算这么做!现在开发进度卡住了,我必须得先写个工具类搞定。弄好了分享。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。