1.JSON转Obj
分两种情况
1.第一种是在请求体里:
传过来的JSON,可以多,可以少,但是必须至少有一个对上的。 多的不会赋予对象,对象有的,JSON没有,也不影响。JSON允许与obj属性不一样。
2.第二种是在 new ObjectMapper 这个jackson提供的json转obj的方法
传过来的JSON只能是少或者一样,不允许与obj属性不一样。不一样就转化不了。
2.OBJ转JSON
使用Jackson转化,原理是看 get 方法,会通过get方法后面的名字,第一个小写字母,开始后面的大写字母生效,否则前面的大写字母全部转小写 例如: 实例属性为:aDmin getADmin 这是get方法,转化成JSON 属性就会变成 admin
同理: set方法 也是一样。他会先用算法把这两个方法,变成响应的字符串,根据 JSON属性名对比,匹配上的,就会获取,或者赋予值。
3.在使用父类引用子类多态的时候去转JSON
他会使用 对象的真实类型的 get set 方法 去进行转化。而不是用父类的。当然,如果你JSON转OBJ父类的你就用父类的字节码对象,也是可以转父类的,但是你的属性名就不能多了。
4.Mybatis-plus使用注意事项
在使用Mybatis-plus的时候,我们常常使用缓存对象去继承实体对象,然后Mybatis-plus提供的方法,写的泛型是针对与实体类的,所以调用底层的 mapper 写的SQL肯定是针对于 泛型类的,所以您可以使用多态的方式,比如继承实体类的的类的对象,放入方法里,他不会多出子类的属性去加入SQL里导致SQL报错:没有这个列。所以用多态的方式也是可以使用Mybatis-plus实现的方法。
5.总结一下
怎么保证这些问题不出呢?
1.BeanCopy的时候,他不是根据属性名进行复制的,因为你的属性都是私有化的,只提供了公开的get set 方法,get set 方法名是一致就保证不出问题
2.转JSON的时候,保证 get set 转化以后的名字与Json名字保持一致就行了。