国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Gson的入門使用

2019-11-08 19:40:01
字體:
來源:轉載
供稿:網友

ava對象和Json之間的互轉,一般用的比較多的兩個類庫是Jackson和Gson,下面記錄一下Gson的學習使用。

基礎概念: Serialization:序列化,使java對象到Json字符串的過程。 Deserialization:反序列化,字符串轉換成Java對象 使用Maven管理Gson,pom.xml導入gson的依賴
  <dependency>     <groupId>com.google.code.gson</groupId>     <artifactId>gson</artifactId>     <version>2.3.1</version>  </dependency> Gson的兩個基礎方法
toJson();fromJson(); Gson的創建方式一:直接new Gson對象復制代碼
// 使用new方法Gson gson = new Gson();// toJson 將bean對象轉換為json字符串String jsonStr = gson.toJson(user, User.class);// fromJson 將json字符串轉為bean對象Student user= gson.fromJson(jsonStr, User.class);// **序列化List**String jsonStr2 = gson.toJson(list);// **反序列化成List時需要使用到TypeToken getType()**List<User> retList = gson.fromJson(jsonStr2,new TypeToken<List<User>>(){}.getType());復制代碼

 

Gson的創建方式二:使用GsonBuilder使用new Gson(),此時會創建一個帶有默認配置選項的Gson實例,如果不想使用默認配置,那么就可以使用GsonBuilder。
//serializeNulls()是GsonBuilder提供的一種配置,當字段值為空或null時,依然對該字段進行轉換Gson gson = new GsonBuilder().serializeNulls().create(); 使用GsonBuilder創建Gson實例的步驟:首先創建GsonBuilder,然后調用GsonBuilder提供的各種配置方法進行配置,最后調用GsonBuilder的create方法,將基于當前的配置創建一個Gson實例。 GsonBuilder的一些配置復制代碼
 Gson gson = new GsonBuilder()         .excludeFieldsWithoutExposeAnnotation() //不對沒有用@Expose注解的屬性進行操作         .enableComplexMapKeySerialization() //當Map的key為復雜對象時,需要開啟該方法         .serializeNulls() //當字段值為空或null時,依然對該字段進行轉換         .setDateFormat("yyyy-MM-dd HH:mm:ss:SSS") //時間轉化為特定格式         .setPRettyPrinting() //對結果進行格式化,增加換行         .disableHtmlEscaping() //防止特殊字符出現亂碼         .registerTypeAdapter(User.class,new UserAdapter()) //為某特定對象設置固定的序列或反序列方式,自定義Adapter需實現JsonSerializer或者JsonDeserializer接口         .create();復制代碼

例如:Gosn對復雜Map的處理時需要用到其中的 enableComplexMapKeySerialization() 配置:

Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create(); //開啟復雜處理Map方法Map<List<User>, String> map = new HashMap<List<User>, String>();// TODO 向map中添加數據String jsonStr = gson.toJson(map);  //toJsonMap<List<User>, String> resultMap = gson.fromJson(jsonStr,new TypeToken<Map<List<User>, String>>() {}.getType()); //fromJson

注意:如果Map的key為String,則可以不使用GsonBuilder的enableComplexMapKeySerialization()方法,或者直接new Gson();

 

Gson的注解:@Expose注解復制代碼
public class User {  @Expose  private String firstName;  @Expose(serialize = false)  private String lastName;  @Expose(deserialize = false)  private String emailAddress;  private String passWord;}復制代碼@Expose中serialize和deserialize屬性是可選的,默認兩個都為true。如果serialize為true,調用toJson時會序列化該屬性,如果deserialize為true,調用fromJson生成Java對象時不會進行反序列化。注意:如果采用new Gson()方式創建Gson,@Expose沒有任何效果。需要使用 gsonBuilder.excludeFieldsWithoutExposeAnnotation()方法。 @SerializedName注解    能指定該字段在序列化成json時的名稱
  @SerializedName("w")  private int width;

 

實際開發中我們會遇到比較復雜的Json,比如json中嵌套json數組,這個時候,就需要我們自定義序列化或反序列化方法了。待續未完.... 參考:http://www.jianshu.com/p/fc5c9cdf3aab
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博罗县| 万荣县| 二手房| 镇雄县| 蕉岭县| 镇原县| 元阳县| 呼和浩特市| 固阳县| 荆州市| 邓州市| 正阳县| 南溪县| 三台县| 兴山县| 响水县| 滁州市| 女性| 南丰县| 手游| 正镶白旗| 宁陕县| 高邮市| 龙海市| 阜康市| 大连市| 临漳县| 湖州市| 福州市| 进贤县| 和龙市| 白水县| 历史| 怀集县| 迁安市| 汾阳市| 宝兴县| 南溪县| 柳江县| 甘洛县| 格尔木市|