本文转载: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)都中出现任意一个时均可以得到正确的结果。