通过改造直接POST JSONObject

时间:2016-04-28 21:18:19

标签: android retrofit

我可以直接通过改造发送JSON:

@POST("rest/workouts")
Call<CreateWorkoutSuccessAnswer> createWorkout(@NonNull @Body JSONObject jsonObject);

2 个答案:

答案 0 :(得分:2)

您可以使用TypedInput

@POST("rest/workouts")
Call<CreateWorkoutSuccessAnswer> createWorkout(@NonNull @Body TypedInput body);

并形成参数:

TypedInput in = new TypedByteArray("application/json", jsonObject.toString().getBytes("UTF-8"));

并使用 作为请求的参数。

答案 1 :(得分:1)

您可以使用GSON JsonObject类直接发布JSON对象。

Googles JSONObject不起作用的原因是改造默认情况下使用GSON并尝试将JSONObject参数序列化为POJO。所以你会得到类似的东西:

{
    "JSONObject":
    {
        <your JSON object here>
    }
}

如果您正在做的事情要求您使用JSONObject,那么您可以使用对象的String格式在两者之间进行转换。