首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Json中key值不统一解析异常——@SerializedName注解妙用

Json中key值不统一解析异常——@SerializedName注解妙用

作者头像
木溪bo
发布2018-12-27 10:21:37
2.6K0
发布2018-12-27 10:21:37
举报
现在前后端通信交互普遍采用的是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;
    }
}
在@SerializedName(value = "downloadUrl", alternate = {"downloadurl", "DownloadUrl", "Downloadurl"})中有两个属性设置,value="默认key",alternate="别名key1,别名key2...",别名可以有多个,多个别名用“ , ”分隔。如此便降低了数据别名不统一造成的解析异常概率,解决由于key不一致拿不到value值的问题。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 现在前后端通信交互普遍采用的是JSON格式数据传输,因此就需要解析JSON数据了。而如果前后端沟通不多,难免造成数据格式不统一解析失败。在不想后台改动太多的前提下,这时候就需要前端去适应后台了,使用@SerializedName可以巧妙的解决这个问题。
  • 在@SerializedName(value = "downloadUrl", alternate = {"downloadurl", "DownloadUrl", "Downloadurl"})中有两个属性设置,value="默认key",alternate="别名key1,别名key2...",别名可以有多个,多个别名用“ , ”分隔。如此便降低了数据别名不统一造成的解析异常概率,解决由于key不一致拿不到value值的问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档