相信大家都有跟外部公司对接的经历,而只要跟外部对接不可避免地就会存在沟通上的不便利,导致开发接近尾声才发现两边属性有大小写的区别。
但是理论上开发前自己沟通不会出现这种问题,但是我最近遇到一个比较奇葩的对接,涉及三方对接,我的接口文档早就发出去了,然后我这边接口也是按照文档提供的属性字段定义的,代码也已经写完,然而到了对接的时候,对方说他跟另一方已经对接完,说我提供的文档有很多大小写不一致(那你早干嘛去了。。。文档都发出来个把星期了),虽然心里一万个不愿意,但是谁叫别人是甲方呢,忍忍还是自己改吧。
那么问题来了,实体与数据库已经建好了,再去改显得很麻烦,那么有没有很简单的办法呢?当然有,jackson包和fastjson包都提供了相应的办法解决。废话不多说,接下来直接说这两者的用法吧!
如果你用的是@JsonProperty注解,那么你千万不要用JSON.toJSONString(实体)去转json,因为他们根本就不配套,可能很多人在这里就蒙蔽了,为什么网上复制过来的转换不了,实际上很多文章只是复制粘贴,根本没有实际执行过,JSON.toJSONString(实体)实际上是fastjson包里面的方法,他不会处理@JsonProperty上设置的“别名”。正确的写法是:ObjectMapper().writeValueAsString(实体类)。
另外一种方法就是用fastjson包提供的@JSONField(当然这个注解还有很多其他功能,比如格式化时间等,这里不做阐述)。如果用了此注解的属性字段,那就需要用JSON.toJSONString(实体)或者JSONObject.toJSONString(实体)。
具体代码就不贴了,自己写个测试demo也很快,希望对大家有所帮助。