文档章节

Gson序列化时@SerializedName的使用

liujiest
 liujiest
发布于 2016/08/09 23:59
字数 457
阅读 587
收藏 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
博文 75
码字总数 34353
作品 0
杭州
程序员
私信 提问
Json转换神器之Google Gson的使用

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

摆渡者
2014/02/28
0
0
Gson SerializedName Gen注解插件了解一下?

Gson SerializedName Gen GsonSerializedNameGen 是一个自动生成Gson SerializedName注解的插件。 下载地址 插件地址 介绍 有时候经常会维护一些老的项目,可能由于历史或开发人员能力问题,...

流水不腐小夏
10/12
0
0
Gson @SerializedName

使用Gson解析json成对象时默认的是将json里对应字段的值解析到java对象里对应字段的属性里面。 然后我们经常会遇到我们自己定义的java对象里的属性名跟json里的字段名是不一样的,这种情况怎...

诗和_远方
08/24
0
0
android Gson解析

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

ForingY
2016/08/02
6
0
Gson转换json字符串时,json里面key包含特殊字符

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

absolve
2016/08/04
445
0

没有更多内容

加载失败,请刷新页面

加载更多

Caffe(二)-Python-自定义网络

这里我们用一个例子先来体验一下 首先定义一下我们的环境变量 $PYTHONPATH,我这儿是Windows开发环境,至于Windows Caffe怎么编译由读者自己下去搞定 我使用的控制台是 Windows PowerShell 添...

Pulsar-V
28分钟前
2
0
ActiveMQ从入门到精通(二)之可靠性机制

ActiveMQ的可靠性机制 缘由( 确认JMS消息) 只要消息被确认之后,才认为消息被成功消费了。消息的成功消费包括三个阶段:客户端接收消息、客户端处理消息以及客户端确认消息。在事务性会话中...

一看就喷亏的小猿
35分钟前
0
0
源码分析 Mybatis 的 foreach 为什么会出现性能问题

背景 最近在做一个类似于综合报表之类的东西,需要查询所有的记录(数据库记录有限制),大概有1W条记录,该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一...

TSMYK
今天
7
0
IC-CAD Methodology企业实战之openlava

在云计算解决安全问题并成为IC界主流运算平台之前,私有的服务器集群系统仍然是各大IC公司的计算资源平台首选。 现在主流的服务器集群管理系统包括lsf,openlava,SkyForm,三者都属于lsf一系...

李艳青1987
今天
5
0
http response stream 字节流 接收与解码

在接收图片、音频、视频的时候,需要用到二进制流。 浏览器会发给客户端 字节Byte流,一串串的发过来_int8格式 -128~127(十进制),也就是8bit(位)。 客户端接收的时候,对接收到的字节收集,...

大灰狼wow
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部