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