在改造2和Gson

时间:2015-12-29 15:21:54

标签: android retrofit2 gson

我正在尝试第一次改造2,作为我的应用程序全局重构的一部分。

我的应用程序存储从传感器读取的不同国王的数据。每个度量都有共同的特性,所以我创建了一个父Measure类(它不是抽象的)和一些子类,用于我需要的每种数据。例如,我创建了一个TemperatureMeasure子类。

我可以访问公共API,我无法更改以发送我在应用中收集的指标。

使用retrofit(2.0 beta),我用这个方法声明了一个接口:

@POST("/bdd/measure/send/{measureType}/{sensorId}")
Call<APIResponse> sendFludiaRaw(@Path("site") String siteId, @Path("measureType") String measureType, @Path("sensor") String sensorId, @Body List<? extends Measure> measures);

我的计划是通过提供扩展Measure类的对象列表来调用此方法。 我使用Gson转换器作为序列化器。 当我调用此方法时 - 例如使用TemperatureMeasure对象列表 - 创建的JSON对象仅包含Measure类的成员,但不包含来自TemperatureMeasure成员的任何成员。

解决此问题的最佳解决方案是什么?

根据我一直在阅读的内容,一种选择是实现串行器/解串器并将其提供给Gson转换器。当序列化程序遇到Measure对象时,它会自动尝试序列化正确的子类。 另一种选择是使用Gson自己处理序列化,并将原始JSON数据作为String提供给改进调用,但这会破坏使用Retrofit的好方面。 我找到的最后一个选项是在我的改造界面中为每种度量创建一个请求。

是否有一个更好的通用友好选项可以阻止我在某处写一个巨大的switch语句?

由于

0 个答案:

没有答案