使用Retrofit支持不同的对象数据类型

时间:2014-10-17 08:59:54

标签: android retrofit

下面是我需要Android应用程序以JSON格式传递给REST API的数据的数据结构的描述。特别值得注意的是“响应”字段,其类型不同。有时它是布尔值,有时是整数,或者它可以是字符串或整数数组。由于各种原因,服务器API无法轻易更改,因此我必须按原样支持它。

如何自定义我的Retrofit用途以迎合数据类型不同的字段?我以前为Retrofit的rest适配器编写了类型适配器,这对于处理响应很有用,但是对于请求的类型适配器是什么呢?

array(
        array(
                question_id => 1,
                route_id => 1,
                response => true,
                timestamp => ‘2014-01-01 20:01:01'
        ),
        array(
                question_id => 2,
                route_id => 1,
                response => ’this is a string',
                timestamp => ‘2014-01-01 20:01:01'
        ),
        array(
                question_id => 3,
                route_id => 1,
                response => 1,
                timestamp => ‘2014-01-01 20:01:01'
        ),
        array(
                question_id => 4,
                route_id => 1,
                response => array(
                        1234,
                        178,
                        109
                ),
                timestamp => ‘2014-01-01 20:01:01'
        ),
)

2 个答案:

答案 0 :(得分:1)

事实证明这非常容易。如果Retrofit在模型类中传递Object类型的对象,它会智能地将它们转换为正确的JSON字段类型。

public class MyModel {

    // Renders to JSON as boolean, int, String etc depending on the underlying class
    public Object response; 

}

答案 1 :(得分:0)

您可以提供自己的内部处理它的json转换器。 How to handle Dynamic JSON in Retrofit?