【android】Android开发中Gson对象@SerializedName 注解的使用
当我们使用Gson解析json数据时都会创建一个对应实体类,有时候json数据里面的字段是java关键词或者json数据里面的字段太简单,我们想在实体类中自定义字段名,这时就可以用@SerializedName注解,将我们自定义的字段名与json数据里面的字段对应起来。
如有用java关键字定义的Gson对象json1和用简单字段定义的Gson对象json2,具体定义代码如下:
//json1 { "public":"1", "class":"2", "static":"3" } //json2 { "a":"1", "b":"2", "c":"3" }
json1 中数据如果建立一个相同字段名的实体类显然是不可行的,因为json1里面的几个key如public、class、static都是java语言中的关键字,这个时候@SerializedName注解就起到了作用。使用@SerializedName注解定义的Gson对象ResponseBean1如下:
public class ResponseBean1{ @SerializedName("pulic") private String pub; @SerializedName("class") private String cla; @SerializedName("static") private String sta; }
json2 中的数据用的是比较简单的字段,如a、b、c,如果直接建立对应字段名的实体类理解起来很不友好,这个时候可以通过使用@SerializedName注解来自定义字段名。使用@SerializedName注解定义的Gson对ResponseBean2如下:
public class Json2{ @SerializedName("a") private String pub; // 对象名可以自定义 @SerializedName("b") private String cla; // 对象名可以自定义 @SerializedName("c") private String sta; // 对象名可以自定义 }
总结:1、使用@SerializedName注解,可以将自定义的字段名与json数据里面的字段对应起来;2、需要gson序列化的model(一般定义为Bean类),一般不会混淆,因为混淆后,会导致Bean类里面的属性名字发生改变,然后gson反序列化就会找不到对应的属性名;也可以混淆,然后使用@serializedName来注释,这样当混淆后,反序列化通过注释来找到对应的字段。所以得出的推荐写法是,用@serializedName来注释Bean对象类,这样即使把Bean对象类混淆了,也不会影响gson对象的反序列化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现