Android Retrifit 2 如何向服务器发送空值

Android How to send null value to server by Retrifit 2

我有一个问题

@PUT("/share/{shareID}")
    fun updateShare(@Header("auth") auth: String,
                    @Path("shareID") shareID: String?,
                    @Body body: UpdateShare): Call<UpdateShareResponce>

更新共享class

class UpdateShare {

    @SerializedName("expireAt")
    var expireAt: Long? = 0
}

我有一个情况,字段“expireAt”必须为空,我需要将它发送到服务器。但是改造会忽略空字段。我该怎么做?

您可以指定一个 int 值作为 null,例如,您可以在值应该为 null 时发送 -1 并且在 server-side 上,当收到此值时保存 null 值而不是 -1在数据库中。

我找到了解决方案。 需要添加到改造生成器这个

val 改造 = Retrofit.Builder() .baseUrl(DIRECTORY_URL) .client(客户端) .addConverterFactory(GsonConverterFactory.create(GsonBuilder().serializeNulls().create())) .build()