现在前后端通信交互普遍采用的是JSON格式数据传输,因此就需要解析JSON数据了。而如果前后端沟通不多,难免造成数据格式不统一解析失败。在不想后台改动太多的前提下,这时候就需要前端去适应后台了,使用@SerializedName可以巧妙的解决这个问题。
我一般都是使用Gson解析json数据,代码如下
//将流转换成字符串(工具类封装)
String json = StreamUtils.stream2String(is);
ApkCheckCodeBean apkCheckCodeBean = new Gson().fromJson(json, ApkCheckCodeBean.class);
解析的数据实体类Bean
public class ApkCheckCodeBean {
/**
* downloadUrl : http://xxxxxx.apk
* versionCode : 3
* versionDes : 1.1.3版本发布了
* versionName : 1.1.3
*/
//在此添加后台可能返回的异常json key别名
@SerializedName(value = "downloadUrl", alternate = {"downloadurl", "DownloadUrl", "Downloadurl"})
private String downloadUrl;
@SerializedName(value = "versionCode", alternate = {"versioncode", "VersionCode", "Versioncode"})
private String versionCode;
@SerializedName(value = "versionDes", alternate = {"VersionDes", "versiondes", "Versiondes"})
private String versionDes;
@SerializedName(value = "versionName", alternate = {"VersionName", "versionname", "Versionname"})
private String versionName;
public String getDownloadUrl() {
return downloadUrl;
}
public void setDownloadUrl(String downloadUrl) {
this.downloadUrl = downloadUrl;
}
public String getVersionCode() {
return versionCode;
}
public void setVersionCode(String versionCode) {
this.versionCode = versionCode;
}
public String getVersionDes() {
return versionDes;
}
public void setVersionDes(String versionDes) {
this.versionDes = versionDes;
}
public String getVersionName() {
return versionName;
}
public void setVersionName(String versionName) {
this.versionName = versionName;
}
}