我从一个例子中学到了,所以我不确定这是否是最佳方式,但无论如何,我使用下面的代码。我创建了一个Retrofit实例并将其用于所有请求。
由于有许多方法,因此有许多类型的数据。似乎我可以通过添加注释自动创建适配器(json - >我的数据类)。但是我需要更多的控制(继承:数据类有共享字段,依赖:某些字段可能不存在,具体取决于其他字段的值),所以我为每个类创建了一个自定义适配器。所以,目前我的代码是这样的:
if (instance == null)
{
val gson = GsonBuilder()
.registerTypeAdapter(myClass1::class.java, myClassDeserialiser1())
.... (tens of this) ....
.registerTypeAdapter(myClass30::class.java, myClassDeserialiser30())
.create()
instance = Retrofit.Builder().
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
.create(MyAPIs::class.java);
}
return instance
上面的问题是我提前同时创建了所有解析器的实例。这可能效率低下。我希望我可以在他们第一次需要时创建它们。这可能吗?
答案 0 :(得分:0)
您可以在类定义中添加@JsonAdapter
注释,而不是调用registerTypeAdapter
。我无法对其效率发表评论,但它会将适配器信息与对象相关联,而不是创建您的Gson
对象,这听起来就像您想要的那样。