浅谈@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的两种方式
1802 0
java导出excel的两种方式(上)
|
8月前
|
存储 数据库 Docker
Docker Hub和镜像仓库
Docker Hub 是 Docker 公司提供的官方公共 Docker 镜像注册表,允许用户存储、分享和获取 Docker 镜像。在 Docker Hub 上,你可以找到许多官方和社区维护的 Docker 镜像,这些镜像涵盖了各种常见的应用程序和服务,如数据库、Web 服务器、应用程序框架等。
3906 0
|
SQL XML 关系型数据库
Mybatis-Plus通过SQL注入器实现真正的批量插入
Mybatis-Plus通过SQL注入器实现真正的批量插入
3163 0
Mybatis-Plus通过SQL注入器实现真正的批量插入
|
安全 JavaScript 前端开发
浅谈 REST API 身份验证的四种方法
在平时开发中,接口验证是必须的,不然所有人都能请求你的接口,会带来严重的后果,接口验证一般有四种方法
3166 0
浅谈 REST API 身份验证的四种方法
|
存储 NoSQL 关系型数据库
Redis(六)set集合类型
set集合和list列表十分的相似,都可以存储多个字符串。但是list列表可以存储重复值,而set集合中不可重复。
5011 0
Redis(六)set集合类型
|
2月前
|
域名解析 网络协议 搜索推荐
阿里云DNS常见问题之获取不到用户真实IP地址如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
完美解决Non-terminating decimal expansion; no exact representable decimal result.异常
完美解决Non-terminating decimal expansion; no exact representable decimal result.异常
19598 0
完美解决Non-terminating decimal expansion; no exact representable decimal result.异常
|
存储 SQL 分布式计算
Docker容器化急速部署ClickHouse
Docker容器化急速部署ClickHouse
|
9月前
|
存储 Go
善用这些技巧 Go语言map元素删除那么简单
善用这些技巧 Go语言map元素删除那么简单
1321 0
|
7月前
qt-绘制曲线(qcustomplot)
qt-绘制曲线(qcustomplot)
166 0