2014-03-03 85 views
1

我在當前的項目中與GSON合作,我很驚訝地看到它的力量,並想知道它是如何在內部工作的。 GSON對象如何將任何對象更改爲JSON,反之亦然。我沒有閱讀谷歌用戶指南,但內部工作沒有提到他們。誰能解釋一下。此外這個問題可能不會吸引一些人,但我是新來的android編程和探索的東西。雖然我成功地使用了gson。但我很想知道它的工作方法。任何人都可以解釋。 非常感謝。GSON的內部工作

+4

你可以隨時獲取源代碼並親自看看... –

+0

好吧,我的朋友感謝您的幫助,我會給它一個看看。 –

+0

http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html對於像我這樣的人,他們想知道這個鏈接是非常有用的,只是發現它。希望能幫助到你。 –

回答

0

我建議您不要執行對象的娛樂操作,並且不要強制GSON,除非需要它。國際海事組織,你必須在任何地方使用GSON你有REST服務,但GSON比java收藏(ArrayListHashMap或其他...)更慢,如果你繼續在任何地方繼續使用GSON,你將降低應用性能。

第二個原因是,當你執行對象的娛樂,這是在手機內存中完成,而只是舉例,我曾與JSONGSON)對象一個問題,暴露了服務,因爲它是35-40MB和對象創建使用超過70MB的RAM。在那裏我有OutOfMemoryExceptionMemoryExhaustedException以及更多這類問題。

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

+1

感謝buddy它真的有幫助 –

+0

沒問題,我很高興幫助。 –

+0

親愛的朋友,你說過使用restful api時必須使用gson是強制性的嗎?如果這是爲什麼? –

1

GSON的內部都建立在三個核心類型:

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

一個關鍵模式是TypeAdapter遞歸實現。例如,TypeAdapter<FoodDelivery>可能會委託給TypeAdapter<Address>TypeAdapter<MenuItem>TypeAdapterFactory接口可以輕鬆構建適用於任意類型的類型適配器。

另一個關鍵模式是Gson包括默認內置的一些很棒的類型適配器。有原型,字符串,集合的類型適配器。另外還有一個特殊類型的適配器,它接受一個任意的Java類並逐字段地將其轉換爲JSON對象。