Gson使用详情

    xiaoxiao2021-03-25  91

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

    转载请注明原文地址: https://ju.6miu.com/read-40537.html

    最新回复(0)