今天用jackson从json转对象的时候发现json2model的时候报错,异常如下:
json字符串:{"user":{"email":"hello@hw.com","password":"world"}}
org.codehaus.jackson.map.JsonMappingException:
Conflicting setter definitions for property "attrs":
com.jfinal.plugin.activerecord.Model#setAttrs(1 params)
vs com.jfinal.plugin.activerecord.Model#setAttrs(1 params)
觉得应该是jfinal对model做了特别的处理,没有了getter、setter之后json工具好像就不能用了,不知道jfinal里面想要从json转model该做那些处理呢?
1、错误里面所谓的conflict指的是 public Model<M> setAttrs(Map<String, Object> attrs)
和 public Model<M> setAttrs(M model)
这两个方法。
2、以上说明jackson对class做了预解析(反射+映射),Model里面没有实际的数据属性,所以这种预解析方式并不适合Model
3、即使jackson不做预解析,直接反射setter方法,Model里面默认也没有setter。所以依然是无法转换回去的……
结论就是,AR-Model这种数据结构貌似不适合默认的json2Model方式,需要json工具对这种数据结构的支持,或者看看能不能采取曲线方式:json2Map<String, Object>+Model.setAttrs(Map<String, Object>)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。