文档章节

Gson序列化时@SerializedName的使用

liujiest
 liujiest
发布于 2016/08/09 23:59
字数 457
阅读 457
收藏 0

        Gson是java中比较常见的json序列化工具,实习参与的项目由于最开始是C#开发的.net项目,近两年才开始用java,但之前的很多项目仍然在使用C#并且还在更新。于是牵涉到跨语言的程序通信, 公司自己用thrift封装了一个服务路由实现。但两个语言有些不一样的地方挺蛋疼,比如命名规则,java喜欢首字母小写,C#喜欢首字母大写,传数据就需要特殊处理一下,不过Gson自带@SerializedName注解已经可以基本解决问题。

        今天敲代码遇到个问题,有个类的某个成员变量(也是个类)转出来所有属性都是null,其他都正常,检查了半天发现就是因为那个成员变量的类用了@SerializedName注解,而其他成员变量没有,而且那里所用json字符串也是小写。。。

        做个笔记,Gson的@SerializedName注解使用。

        没用注解时:

public class User {

	private String name;

	private String slogan;

	private Integer age;

	public User(String name, Integer age, String slogan) {
		this.name = name;
		this.age = age;
		this.slogan = slogan;
	}
    //略
}
import com.google.gson.Gson;

public class GsonTest {

	public static void main(String[] args) {
		Gson gson = new Gson();
		User user = new User("jiest", 21, "Gson测试");
		String json = gson.toJson(user);
		System.out.println("obj->json:" + json);
		User user2 = gson.fromJson(json, User.class);
		System.out.println("json->obj:" + user2);
	}

}

输出:

obj->json:{"name":"jiest","slogan":"Gson测试","age":21}
json->obj:User [name=jiest, slogan=Gson测试, age=21]

使用注解

public class User {

	@SerializedName("Name")
	private String name;

	@SerializedName("Slogan")
	private String slogan;

	@SerializedName("Age")
	private Integer age;

	public User(String name, Integer age, String slogan) {
		this.name = name;
		this.age = age;
		this.slogan = slogan;
	}
    //lue
}

输出:

obj->json:{"Name":"jiest","Slogan":"Gson测试","Age":21}
json->obj:User [name=jiest, slogan=Gson测试, age=21]

有代码应该够了。。。

© 著作权归作者所有

共有 人打赏支持
liujiest
粉丝 7
博文 66
码字总数 28338
作品 0
杭州
程序员
Json转换神器之Google Gson的使用

这几天,因为项目的需要,接触了Google的Gson库,发现这个东西很好用,遂记下简单的笔记,供以后参考。至于Gson是干什么的,有什么优点,请各位同学自行百度。 1. 下载Gson 拷贝到项目的lib...

摆渡者
2014/02/28
0
0
android Gson解析

Gson是Google提供的方便在json数据和Java对象之间转化的类库。 Gson这是使用Gson的主要类,使用它时一般先创建一个Gson实例,然后调用toJson(Object)或者from(String,Class)方法进行转换。 ...

ForingY
2016/08/02
6
0
json和gson的一些区别

1.如果要想使得生成json的格式跟属性不是匹配一 一的 gson中有一个注解com.google.gson.annotations.SerializedName("NAME"),可以实现; 2.GsonBuilder可以实现json字符串的美化 jsonObject...

zhaomb
2016/12/17
77
0
Gson转换json字符串时,json里面key包含特殊字符

用gson转换json字符串的时候,json里面的key包含数字和类似Weather data service,java关键字,这些都不可以作为java类的变量名。 那个在使用gson进行转换的时候可以使用@SerializedName来解...

absolve
2016/08/04
445
0
Android处理java的date数据的问题

背景 直接在接口中转Date对象时候,Gson默认只会序列化/反序列化 Date().toString()后的字符串,类似 Oct 16, 2015 12:28:22 PM,使用gson解析后台返回的数据时,无意发现了一个问题,如果使...

我家有宝
2016/09/09
14
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Ubuntu18.04 显卡GF-940MX安装NVIDIA-390.77

解决办法: 下面就给大家一个正确的姿势在Ubuntu上安装Nvidia驱动: (a)首先去N卡官网下载自己显卡对应的驱动:www.geforce.cn/drivers (b)下载后好放在英文路径的目录下,怎么简单怎么来...

AI_SKI
今天
0
0
深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
今天
0
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
今天
0
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
2
0
openJDK之sun.misc.Unsafe类CAS底层实现

注:这篇文章参考了https://www.cnblogs.com/snowater/p/8303698.html 1.sun.misc.Unsafe中CAS方法 在sun.misc.Unsafe中CAS方法如下: compareAndSwapObject(java.lang.Object arg0, long a......

汉斯-冯-拉特
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部