总结一下:在实际开发中会遇到的坑,关于JSON与BeanCopy

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名字保持一致就行了。

你可能感兴趣的:(SpringBoot,json,java)