Gson使用详情

本文转载:http://www.importnew.com/23862.html

  • Gson的基本用法
  • 属性重命名 @SerializedName 注解的使用
  • Gson中使用泛型

基本用法

Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。同时每个方法都提供了重载方法,我常用的总共有5个。

基本数据类型的解析和生成这里不做示例,请看原博文
1. POJO类的生成与解析

public class User {
    //省略其它
    public String name;
    public int age;
    public String emailAddress;
}
//生成
Gson gson = new Gson();
User user = new User("怪盗kidou",24);
String jsonObject = gson.toJson(user); // {"name":"怪盗kidou","age":24}
//解析
Gson gson = new Gson();
String jsonString = "{\"name\":\"怪盗kidou\",\"age\":24}";
User user = gson.fromJson(jsonString, User.class);

属性重命名 @SerializedName

从上面POJO的生成与解析可以看出json的字段和值是的名称和类型是一一对应的,但有时候会出现以下这种情况:
期望:{“name”:”怪盗kidou”,”age”:24,”emailAddress”:”ikidou@example.com”}
实际:{“name”:”怪盗kidou”,”age”:24,”email_address”:”ikidou@example.com”}
则对于json中email_address这个属性对应POJO的属性则变成:

@SerializedName("email_address")
public String emailAddress;

即:这里的@serializedName是对于前端的开发命名的规法与java开发命名规范的折中处理办法而产生的
@SerializedName注解提供了两个属性,上面用到了其中一个,别外还有一个属性alternate,接收一个String数组。
注:alternate需要2.4版本

@SerializedName(value = "emailAddress", alternate = {"email", "email_address"})
public String emailAddress;

当上面的三个属性(email_address、email、emailAddress)都中出现任意一个时均可以得到正确的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值