Android 改装请求正文在@body参数中添加双引号

Android 改装请求正文在@body参数中添加双引号,android,json,gson,retrofit2,Android,Json,Gson,Retrofit2,我正在尝试序列化请求,然后再将其发送到Web服务调用的改型 在序列化请求时,我需要将json字符串传递给@Body parameter中的改装调用,因此 生成的json字符串将生成以下json字符串,并带有“(前后双引号) “访问权”是一种“访问权”令牌。访问权是一种“访问权”令牌。访问权是一种“访问权”令牌。访问权是一种“访问权”令牌。访问权是一种“访问权”令牌::”,“访问权”是一种“访问权”是一种访问权。访问权是一种“D808080FAD80FAD8080FA6777777D7878CC7

我正在尝试序列化请求,然后再将其发送到Web服务调用的改型

在序列化请求时,我需要将json字符串传递给@Body parameter中的改装调用,因此 生成的json字符串将生成以下json字符串,并带有“(前后双引号)

“访问权”是一种“访问权”令牌。访问权是一种“访问权”令牌。访问权是一种“访问权”令牌。访问权是一种“访问权”令牌。访问权是一种“访问权”令牌::”,“访问权”是一种“访问权”是一种访问权。访问权是一种“D808080FAD80FAD8080FA6777777D7878CC78CC78CC7078787878787878787878CC70404040404078787878787878787878CC747474747474CCCCC666666BCCCCCCC6666666666CCCCC66666666666CCCCCCCCCCCCCCCC777777777777CCCCCCC7777777777777777,“类型\”:“运行\”,“utc\U偏移量\”:“+05:30\”,“{u id\”:“2004ff72-707d-489a-927e-4cdeed410095\”,“活动id\:“5ed7c90f-805e-4763-aa62-7f8126c84f06\,“卡路里”:600.0、“距离”:40.0、“强度”:“100\,“时间戳”:“2018-07-18T12:56:43+00:00\,“跑步类型”:“utc:“偏移量”:“05:30”

由于存在双引号,第三方api无法成功解析它

这是我的请求序列化程序代码

 public class RequestSerializer implements JsonSerializer<Request<?>> {

    @Override
    public JsonElement serialize(Request<?> request, Type typeOfSrc, JsonSerializationContext context) {

        JsonObject jsonObject =  new GsonBuilder().create().toJsonTree(request,Request.class).getAsJsonObject();
        JsonElement requestList = jsonObject.get("requestList");
        jsonObject.remove("requestList");
        jsonObject.add("fitness",requestList);
        return jsonObject;

    }
 }

公共类RequestSerializer使用对象实现JsonSerializer消除了POST@Body中的字符串引用请求,
示例作为我的工作代码:

class Data{
    @SerializedName("access_token")
    @Expose
    private String access_token;

    public String getAccess_token() {
        return access_token;
    }

    public void setAccess_token(String access_token) {
        this.access_token = access_token;
    }

    // Other field defined here
}

@Keep
class Result{
    @SerializedName("rc") int rc;
}

@Keep
interface APIFitness{
    @Headers("Content-Type: application/json")
    @POST("api/save/")
    Observable<Result> Save(@Body Data data);

    //More methods..
}
class Data{
    @SerializedName("access_token")
    @Expose
    private String access_token;

    public String getAccess_token() {
        return access_token;
    }

    public void setAccess_token(String access_token) {
        this.access_token = access_token;
    }

    // Other field defined here
}

@Keep
class Result{
    @SerializedName("rc") int rc;
}

@Keep
interface APIFitness{
    @Headers("Content-Type: application/json")
    @POST("api/save/")
    Observable<Result> Save(@Body Data data);

    //More methods..
}
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("url")
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    APIFitness service = retrofit.create(APIFitness.class);
    Data data = new Data();
    authCode.setAccess_token(token);

    service.Save(data)
           .subscribeOn(Schedulers.io())
           .observeOn(Schedulers.newThread())
           .subscribe( data -> { } )