日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gson的入门使用

發布時間:2023/12/3 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gson的入门使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??Gson的入門使用

Java對象和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); //toJson Map<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 {@Exposeprivate 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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Gson的入门使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。