我在当前的项目中与GSON合作,我很惊讶地看到它的力量,并且想知道它是如何在内部工作的。 GSON对象如何将任何对象更改为JSON,反之亦然。我确实阅读了谷歌用户指南,但没有提到他们的内部工作。谁能解释一下。此问题可能不会吸引一些人,但我是Android编程的新手,正在探索的东西。虽然我成功地使用了gson。但我想知道它的工作方法。任何人都可以解释。 非常感谢。
答案 0 :(得分:2)
Gson的内部构建基于三种核心类型:
一个关键模式是TypeAdapter以递归方式实现。例如,TypeAdapter<FoodDelivery>
可以委托给TypeAdapter<Address>
和TypeAdapter<MenuItem>
。 TypeAdapterFactory
接口可以轻松地为任意类型构建类型适配器。
另一个关键模式是Gson
包含默认内置的一些很棒的类型适配器。有基元,字符串,集合的类型适配器。还有一个特殊类型的适配器,它接受任意Java类并逐个字段地将它转换为JSON对象。
答案 1 :(得分:-1)
我建议您不要执行对象的重新创建,除非需要,否则不要强制GSON
。 IMO,您必须在GSON
服务的任何地方使用REST
,但GSON
比java集合(ArrayList
或HashMap
或其他更慢。GSON
。 ..)如果你继续在任何地方使用JSON
,你将减少应用程序的性能。
第二个原因是,当您执行对象重新创建时,这是在手机内存中完成的,例如,我遇到了GSON
(OutOfMemoryException
)对象的问题,该对象因服务而暴露是35-40MB,对象创建使用超过70MB的RAM。在那里,我有MemoryExhaustedException
,{{1}}以及更多此类问题。
如果此限制对您不感兴趣(您没有大对象,或者不需要高速),则继续将对象转换为GSON。