浅谈@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
java导出excel的两种方式(上)
java导出excel的两种方式
2033 0
java导出excel的两种方式(上)
|
域名解析 网络协议 Linux
【异常解决】UnknownHostException: api.weixin.qq.com 的解决方案
【异常解决】UnknownHostException: api.weixin.qq.com 的解决方案
1076 0
|
9月前
|
JSON Dubbo 测试技术
逐步教你如何在Postman中导入Swagger API
在现代软件开发中,Swagger 和 Postman 作为 API 设计、开发和测试的利器,都被广泛应用。可以将 Swagger 定义的 API 导入到 Postman 中,充分利用 Postman 强大的测试特性对接口进行深入测试。
|
9月前
|
前端开发 Java 数据库连接
Spring Boot 3 整合 Mybatis-Plus 动态数据源实现多数据源切换
Spring Boot 3 整合 Mybatis-Plus 动态数据源实现多数据源切换
|
Java 应用服务中间件
Java SpringBoot 上传图片到服务器,完美可用
Java SpringBoot 上传图片到服务器,完美可用
1173 0
Java SpringBoot 上传图片到服务器,完美可用
|
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解决】
10489 0
|
9月前
|
Android开发
Android android:exported="true" 属性
Android android:exported="true" 属性
1335 0
|
9月前
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
10715 0
完美解决Non-terminating decimal expansion; no exact representable decimal result.异常
完美解决Non-terminating decimal expansion; no exact representable decimal result.异常
24346 0
完美解决Non-terminating decimal expansion; no exact representable decimal result.异常
|
7月前
|
消息中间件 Java Maven
如何在Java中使用RabbitMQ
如何在Java中使用RabbitMQ