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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

使用Google GSON:额外的赠品:第一部分

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Google GSON:额外的赠品:第一部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

這是以前的Google GSON入門的后續文章,其中顯示了有關使用Google Gson的入門資料。

本文顯示了GSON庫的一些其他優點。 由于有很多關于這些額外功能的文章要寫,所以我將長篇文章分成2個系列,因此,這是其中一部分,在下一篇文章中,我將發布其余內容。

使用GSON庫的好處在于,它不需要任何注釋或配置即可進行簡單轉換。 盡管它使用默認配置來使事情變得簡單。 GSON具有從Java對象創建Json的靈活性,反之亦然。 我們真正的Gson類包含json轉換的許多默認值,但是我們可以使用GsonBuilder類覆蓋默認值。 因此,讓我們開始吧。

漂亮格式的JSON輸出

當您打印使用Gson創建的json輸出字符串時,您將在一行中看到輸出,如下所示

{"name":"ajduke","languagesKnown":["Java","Scala","JavaScript"]}

這是稱為壓縮模式的默認格式化模式。 當您的json具有很多字段和組件時,閱讀起來會變得更加困難。 為了正確格式化,該庫具有漂亮的漂亮格式化模式,該模式將每一字段打印在一行中

要使用此功能,您需要使用GsonBuilder#setPrettyPrinting()創建Gson實例,如以下清單所示

以下是我們的類,其對象將轉換為其json表示形式,

class Developer {private String name;private String classz;List<String> languagesKnown;public Developer() {name = "ajduke";languagesKnown = new ArrayList<>();languagesKnown.add("Java");languagesKnown.add("Scala");languagesKnown.add("Ruby");} }

注意行號 7個使用,

Gson gson = new Gson(); String json = gson.toJson(new Developer()); System.out.println("********* Compact mode ***********"); System.out.println(json);GsonBuilder gsonBuilder = new GsonBuilder(); Gson prettyGson = gsonBuilder.setPrettyPrinting().create(); json = prettyGson.toJson(new Developer()); System.out.println("\n ******* Pretty formatting *********"); System.out.println(json);

上面的輸出是

********* Compact mode *********** {"name":"ajduke","languagesKnown":["Java","Scala","Ruby"]}******* Pretty formatting ********* {"name": "ajduke","languagesKnown": ["Java","Scala","Ruby"] }

在JSON輸出中包含空字段

默認情況下,在轉換為Json格式時,在轉換中會忽略空值字段。 這僅僅是為了使輸出清晰緊湊。

但是我們可以通過使用GsonBuilder #serializeNulls()創建Gson實例來覆蓋此行為。 以下清單顯示

class Developer {private String name;private String classz;List<String> languagesKnown;public Developer() {name = "ajduke";classz= "Developer";languagesKnown = new ArrayList<>();languagesKnown.add("Java");languagesKnown.add("Scala");languagesKnown.add("Ruby");} }

請注意第.11行

Gson gson = new Gson();System.out.println("Default behaviour "); GsonBuilder gsonBuilder = new GsonBuilder();Gson prettyGson = gsonBuilder.setPrettyPrinting().create(); String json = prettyGson.toJson(new Developer()); System.out.println(json);System.out.println("Including the nulls "); Gson includeNullsGson = gsonBuilder.serializeNulls().create(); String json2 = includeNullsGson.toJson(new Developer()); System.out.println(json2);

注意上面的輸出,包括classz

Default behaviour {"name": "ajduke","languagesKnown": ["Java","Scala","Ruby"] } Including the nulls {"name": "ajduke","classz": null,"languagesKnown": ["Java","Scala","Ruby"] }

包括自定義名稱

默認情況下,json輸出字段名稱與類字段名稱相同。 Gson提供了使用注釋更改此方法的方法。

為此,我們需要使用為該字段提供的@serilizedName批注,我們需要在輸出json中更改名稱。

因此,我們的Developer類將名稱更改為firstName

class Developer {@SerializedName("firstName")private String name;private String classz;List<String> languagesKnown;public Developer() {name = "ajduke";languagesKnown = new ArrayList<>();languagesKnown.add("Java");languagesKnown.add("Scala");languagesKnown.add("Ruby");} }

如果我們跟隨

Gson gson = new Gson(); String json = gson.toJson(new Developer()); System.out.println("********* Compact mode ***********"); System.out.println(json);GsonBuilder gsonBuilder = new GsonBuilder(); Gson prettyGson = gsonBuilder.setPrettyPrinting().create(); json = prettyGson.toJson(new Developer()); System.out.println("\n ******* Pretty formatting *********"); System.out.println(json);

然后在輸出中,我們將使用“ firstName”而不是“ name”

********* Compact mode *********** {"firstName":"ajduke","languagesKnown":["Java","Scala","Ruby"]}******* Pretty formatting ********* {"firstName": "ajduke","languagesKnown": ["Java","Scala","Ruby"] }

向/從流寫入JSON

Gson庫對每個方法toJson()和fromJson()都有一個重載,分別用于寫入和讀取流。 簡單來說,您可以將json輸出寫入文件,字符或緩沖區,并且可以從任何Reader流中讀取。

以下清單顯示了如何在File流中寫入和讀取JSON

package in.ajduke.ap013;import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List;import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.annotations.SerializedName;public class GsonEx {public static void main(String[] args) throws IOException {Gson gson = new Gson();System.out.println("Writing JSON to file ....");// using try with resourcestry (FileWriter writer = new FileWriter("d:/output.json")) { gson.toJson(new Developer(), writer); // writing to file}System.out.println("Reading from file.. ");FileReader fileReader = new FileReader("d:/output.json");dev= gson.fromJson(fileReader, Developer.class);System.out.println(dev);} }class Developer {private String name;private String classz;List<String> languagesKnown;public Developer() {name = "ajduke";languagesKnown = new ArrayList<>();languagesKnown.add("Java");languagesKnown.add("Scala");languagesKnown.add("Ruby");}@Overridepublic String toString() {return "Developer [name=" + name + ", classz=" + classz+ ", languagesKnown=" + languagesKnown + "]";} }

參考: 使用Google GSON:額外的東西:來自ajduke博客博客的JCG合作伙伴 Abhijeet Sutar的 第一部分 。

翻譯自: https://www.javacodegeeks.com/2014/01/using-google-gson-extra-goodies-part-i.html

總結

以上是生活随笔為你收集整理的使用Google GSON:额外的赠品:第一部分的全部內容,希望文章能夠幫你解決所遇到的問題。

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