@SerializedName注解的意义

本文转自http://blog.csdn.net/jiayi_yao/article/details/51057267,感谢原作者!

1 {
2     "id":"1"
3     "n":"kyoya"
4     "p":"123456"
5     "s":"0"
6 }

一段需要解析的json

1 public class User{
2     private String id;
3     private String n;
4     private String p;
5     private String s;
6 }

定义一个User类解析json

然后就可以用fastjson或者Gson解析,至此都是正常步骤。

但有一个问题就是,User类的命名不太友好(id,n,p,s???),为此,Gson提供了一个麻烦的方法来解决这个不友好(嗯,麻烦!毕竟本小白有密集恐惧症),即提供@SerializedName注解

 1 public class User{
 2
 3     private String id;
 4
 5     @SerializedName("n")
 6     private String userName;
 7
 8     @SerializedName("p")
 9     private String password;
10
11     @SerializedName("s")
12     private String sex;
13 }

优化(fuzahua)后的User写法

再使用Gson解析的时候就会自动将n对应的值赋值到userName属性上,同样,如果要将User生成json字符串,使用Gson生成的时候也会将userName的名字生成n。

这样就解决了java对象里属性名跟json里字段名不匹配的情况了。

再使用Gson解析的时候就会将n对应的值赋值到userName属性上,同样的如果我们要将User生成json字符串使用Gson生成的时候也会将userName的名字生成n。这样就解决了java对象里属性名跟json里字段名不匹配的情况了。

时间: 2024-10-09 17:37:28

@SerializedName注解的意义的相关文章

@SerializedName注解

在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合. Gson解析json的方法我这里就不详细说明了,网上一大把的例子,我这里主要说一下使用@SerializedName进行注解的情况. 使用Gson解析json成对象时默认的是将json里对应字段的值解析到java对象里对应字段的属性里面.然后我们经常会遇到我们自己定义的java对象里的属性名跟json里的字段名是不一样的,这种情况怎么办呢,这时我们就可以使用@SerializedNa

Spring中@相关注解的意义

1.@controller 控制器(注入服务) 用于标注控制层,相当于struts中的action层 2.@service 服务(注入dao) 用于标注服务层,主要用来进行业务的逻辑处理 3.@repository(实现dao访问) 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件. 4.@component (把普通pojo实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>) 泛指各种组件,就是说

gson的 Expose注解和 SerializedName注解

1.使用@Expose可以区分实体中不想被序列化的属性 @Expose标签的2个属性.  1.1deserialize (boolean) 反序列化 默认 true    1.2 serialize  (boolean) 序列化 默认 true 使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();创建Gson对象,没有@Expose注释的属性将不会被序列化 public class User { @Expose

Android探究之[email&#160;protected]

@SerializedName注解的意义 当我们使用Gson解析Json数据时都会创建一个对应实体类,有时候Json数据里面的字段是Java关键词或者Json数据里面的字段太简单,我们想在实体类中自定义字段名,这时就可以用@SerializedName注解. @SerializedName注解,不管是对象转Json还是Json转对象,字段名称会被替换成注解的名字. @SerializedName这个注解解决了我们Model和Json不对应的问题,好处: 首先将服务器字段和客户端字段名称区分,不用

通透[email&#160;protected]注解、@SerializedName、解析json数据

在讲如何解析数据之前,先描述一下gson中的两个注解@Expose和@SerializedName. @Expose注解的作用:区分实体中不想被序列化的属性,其自身包含两个属性deserialize(反序列化)和serialize(序列化),默认都为true. 使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();创建Gson对象,没有@Expose注释的属性将不会被序列化.. private class Use

注解的作用(一)

最近在看注解的内容,在网上找到一篇文章,写的还是蛮不错的,把基础的应用都写出来了.收藏一下.转载地址:http://blog.sina.com.cn/s/blog_93dc666c0101gzn5.html 看到注解突然想到对象/关系映射功能,自动生成数据库表,存储javaBean对象. 有时间结合资料对这方便做一个分析(!!!!!). ava 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后

java注解之二

从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通过使用Annotation,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息.代码分析工具.开发工具和部署工具可以通过这些补充信息进行验证.处理或者进行部署. Annotation提供了一种为程序元素(包.类.构造器.方法.成员变量.参数.局域变量)设置元数据的方法.Annotation不能运行,它只有成员变量,没有方

13.MyBatis注解式开发

mybatis 的注解,主要是用于替换映射文件.而映射文件中无非存放着增.删.改.查 的 SQL 映射标签.所以,mybatis 注解,就是要替换映射文件中的 SQL 标签. mybatis 官方文档中指出,若要真正想发挥 mybatis 功能,还是要用映射文件.即 mybatis官方并不建议通过注解方式来使用 mybatis. 注解的基础知识: 注解的基础语法 A.注解后是没有分号的. B.注解首字母是大写的,因为注解与类.接口是同一级别的.一个注解,后台对应着 一个@interface 类.

JAVA 注解的几大作用及使用方法详解

JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种: 1.生成文档.这是最常见的,也是java 最早提供的注解.常用的有@see @param @return 等: