簡體   English   中英

GSON的內部工作

[英]Internal working of GSON

我在當前項目中與GSON合作,我驚訝地看到它的功能,並且想知道它在內部如何工作。 GSON對象如何將任何對象更改為JSON,反之亦然。 我確實閱讀了Google用戶指南,但並未提及其內部工作原理。 誰能解釋。 另外,這個問題可能對某些人沒有吸引力,但是我是android編程的新手,正在探索事物。 雖然我成功使用了gson。 但是我確實想知道它的工作方法。 誰能解釋。 非常感謝。

Gson的內部構造基於三種核心類型:

  • JsonReader從流中讀取JSON文檔中的元素。
  • JsonWriter將JSON文檔中的元素寫入流中。
  • TypeAdapter將單個JSON元素轉換為單個對象,反之亦然。

一種關鍵模式是TypeAdapter遞歸實現。 例如, TypeAdapter<FoodDelivery>可以委托給TypeAdapter<Address>TypeAdapter<MenuItem> 使用TypeAdapterFactory接口可以輕松地為任意類型構建類型適配器。

另一個關鍵模式是Gson默認包含一些很棒的內置類型適配器。 有用於原語,字符串,集合的類型適配器。 加上一個特殊的類型適配器,該適配器接受任意Java類並將其逐字段轉換為JSON對象。

我建議您不要執行對象GSON除非需要,否則不要強制GSON IMO,您必須在擁有REST服務的任何地方使用GSON ,但是GSON比Java集合( ArrayListHashMap或任何其他...)要慢,如果繼續在GSON地方使用GSON ,您的應用程序性能將會降低。

第二個原因是,當您執行對象重新創建時,這是在手機內存中完成的,僅舉例來說,我遇到了JSONGSON )對象的問題,該對象在服務中公開,因為它是35-40MB,而對象創建使用了70MB以上的內存。 那里我有OutOfMemoryExceptionMemoryExhaustedException和更多此類問題。

如果您對此限制不感興趣(您沒有大的對象,或者不需要高速),請繼續將對象轉換為GSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM