博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gson序列化时@SerializedName的使用
阅读量:7204 次
发布时间:2019-06-29

本文共 1478 字,大约阅读时间需要 4 分钟。

hot3.png

        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]

有代码应该够了。。。

转载于:https://my.oschina.net/liujiest/blog/730334

你可能感兴趣的文章
WebBrowser控件使用相关
查看>>
【Android】1.1 开发环境安装和配置
查看>>
站点公司亚马逊砸了10亿也没能做成智能手机,技术是须要沉淀和积累的
查看>>
[数据库]SQL Server 用户NT AUTHORITY\IUSR 登录失败
查看>>
轻松学会多线程(四)——synchronized同步keyword知多少
查看>>
Apache Kylin 部署之不完全指南
查看>>
php中将SimpleXMLElement Object数组转化为普通数组
查看>>
docker学习(7) docker-compose使用示例
查看>>
Android 推断当前Activity是不是最后一个Activity 以及 应用或Activity是否存在
查看>>
【Android】6.3 ProgressDialog
查看>>
设计模式六大原则——迪米特法则(LoD)
查看>>
HtmlAgilityPack 之 HtmlNode类
查看>>
[转]Java Web基础——Action+Service +Dao三层的功能划分
查看>>
ngx.location.capture 只支持相对路径,不能用绝对路径
查看>>
自己在OC考试中的试题
查看>>
向 Git 服务器添加 SSH 公钥
查看>>
Lua学习笔记5:类及继承的实现
查看>>
Vagrant工具
查看>>
如何使用 Android Studio 的 git hub 功能
查看>>
UML应用:业务内涵的分析抽象&表达
查看>>