浅谈@SerializedName

简介: 本文讲述@SerializedName相关的内容。
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

背景

做项目的时候,看到原项目里用了@SerializedName注解(为了解决我的项目照搬就飘红的问题,还花了点时间找到了对应的com.google.code.gson:gson版本,并且通过修改build.gradle文件导入了依赖)。

虽然我知道serialized是序列化的意思,但其实我之前没有仔细想过什么是序列化和反序列化,仅仅知道有这么个概念。再加上我看到注解后的名字和没注解前的一样,这让我更疑惑了。为什么要注解呢?为什么需要序列化呢?于是就开始了学习新知识之路。

image.png
图:某项目原代码片段

序列化与反序列化————Java与Json之间的相互转换

  • 序列化:Java对象——>JSON
  • 反序列化:JSON->Java对象

什么是JSON?

JSON:JavaScript Object Notation

它的格式长这样:

{
  "id": "123456",
  "introduce": "lalalalala",
  "sex": "1",
  "username": "hahahaa",
}

而对应的Java对象长这样(先假设两者对应名称相同,详细的后文再解释)

public class User{

private String id;
public String getId() {
    return id;
}

private String introduce;
public String getIntroduce() {
    return introduce;
}

private int sex;
public int getSex() {
    return sex;
}

private String username;
public String getUsername() {
    return username;
}
}

关于@SerializedName

@SerializedName有两个参数,其中第二个是可选,表示别名,

如,在下图所示的代码生成的JSON文件中,头像那一行可能会显示"haha",这就是别名的作用,对JSON有效。
image.png
实际上就是同一个Java字符串可以映射成不同的JSON字符串表示(一对多)

为什么要序列化?

我目前的理解是:因为我本次的任务主要是界面设计,但是最终需要调用接口和后端交互,接口返回的信息都是JSON格式的。

相关文章
|
Java 编译器 API
告别KAPT!使用 KSP 为 Kotlin 编译提速
Kotlin Symbol Processing(KSP)是新一代的 Kotlin 注解处理工具,它基于 Kotlin Compiler 实现,相对于 KAPT 性能得到很大提升
1725 0
|
前端开发 Java API
java导出excel的两种方式(上)
java导出excel的两种方式
2048 0
java导出excel的两种方式(上)
|
Java Android开发
Android 获取项目证书指纹MD5、SHA1、SHA256步骤详解
Android 获取项目证书指纹MD5、SHA1、SHA256步骤详解
1654 0
Android 获取项目证书指纹MD5、SHA1、SHA256步骤详解
|
域名解析 网络协议 Linux
【异常解决】UnknownHostException: api.weixin.qq.com 的解决方案
【异常解决】UnknownHostException: api.weixin.qq.com 的解决方案
1133 0
|
10月前
|
Android开发
Android android:exported="true" 属性
Android android:exported="true" 属性
1506 0
|
NoSQL 小程序 Java
微信开发框架WxJava之微信公众号开发的入门使用篇
WxJava是一款基于Java语言的微信开发Java SDK,它提供了微信支付,开放平台,小程序,企业微信,公众号等多个平台的API接口,并将其封装为易于调用的Java方法,方便Java开发者快速开发与微信相关的应用。
5057 1
|
NoSQL Redis
Redis 之 WRONGTYPE Operation against a key holding the wrong kind of value【bug解决】
Redis 之 WRONGTYPE Operation against a key holding the wrong kind of value【bug解决】
10872 0
|
7月前
|
存储 消息中间件 JSON
|
10月前
|
前端开发 Java 数据库连接
Spring Boot 3 整合 Mybatis-Plus 动态数据源实现多数据源切换
Spring Boot 3 整合 Mybatis-Plus 动态数据源实现多数据源切换