Author:赵志乾
Date:2019-09-28
Declaration:All Right Reserved!!!
场景
实际项目中,经常会遇到调用第三方服务接口的情景。第三方通常只提供一份接口文档,且字段命名规则、格式需求与自己项目不一致。
解决方案
方案1:单独做一层转换
按照第三方的要求写一层Vo,然后将Vo转换成自己项目中的字段格式和命名规则。此方案在实现过程中会非常繁琐,代码中充斥着各种格式的转化,尤其是时间的格式。此方案并不推荐。
方案2:使用fastJosn的@JSONFeild注解
注解@JSONFeild最常用的属性就是name和format。其中name用于设定字段的别名,format用于定制时间的格式。
// 场景1: 第三方字段名采用脊柱式命名规则,自己的系统采用小驼峰命名规则。使用name属性匹配第三方命名
// 方式。
public class ConnectVo{
@JSONFeild(name="connect-name")
private String connectName;
public String getConnectName(){
return connectName;
}
public void setConnectName(String connectName){
this.connectName=connectName;
}
}
// 场景2: 第三方时间字段要求格式为yyyy-MM-dd,自己的系统就是使用普通的时间戳。使用format属性控制
// 格式
public class ConnectVo{
@JSONFeild(name="connect-time", format="yyyy-MM-dd")
private Timestamp connectTime;
public Timestamp getConnectTime(){
return connectTime;
}
public void setConnectTime(Timestamp connectTime){
this.connectTime=connectTime;
}
}
注意:使用fastJson作为序列化和反序列化工具,还有一个好处,就是Vo只需要符合JavaBean规范即可,不需要显示实现Serializable接口。