使用SRetrofit中的gson为类的内部字段提供服务

时间:2015-08-07 14:20:15

标签: android gson retrofit

我使用Square的Retrofit作为我的REST客户端,用于Android中的通信。我发现一些服务器端服务没有很好地序列化我们的对象。如何仅对对象的内部字段进行血清化?

在此示例中,如何转换此类:

public class Car {
    private String plate;
    private String carName;
}

进入此JSON表示(忽略大小写):

{
    "plate":"abc123",
    "carname":"BMW"
}

进入此:

{
    "car": 
    {
        "plate":"abc123",
        "carname":"BMW"
     }
}

我实际上必须对某些类进行这种序列化,对其他类进行标准序列化。

1 个答案:

答案 0 :(得分:1)

当您使用改装发出请求时,请将Car对象的每个部分作为 @Query (针对 @GET 请求)和 @Field发送(对于 @POST 请求。)

示例请求

select f.*
from dbo.frun('2015-01-01', '2015-02-01');

使用@Body

@FormUrlEncoded
@POST("www.foo.bar/example.json")
ExampleResponse getExample(@Field("plate") Car.plate, 
    @Field("carname") Car.carname);

(使用 @POST @Body 不需要 @FormUrlEncoded