gson 如何发送自定义数组的对象与文章正文?

nafvub8i  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(159)

通过改造接口,存在数据类PlaylistInsertOperationTrackId和函数insertTracks

data class PlaylistInsertOperation(
    val tracks: List<TrackId>,
)

data class TrackId(
    val id: String,
    val albumId: String
)

@FormUrlEncoded
@POST("/patch")
suspend fun insertTracks(
    @Field("diff") diff: List<PlaylistInsertOperation>
): PlaylistResponse

发送请求时,字段diff等于下一个字符串

diff=PlaylistInsertOperation(tracks=[TrackId(id=39117009, albumId=5034819), TrackId(id=89341636, albumId=18635889)])

但需要这样串

diff=[{"tracks":[{"id":"61081889","albumId":9499401}]}]

如何告诉gsonretrofit解析没有数据类名的模型?

ki0zmccv

ki0zmccv1#

无法在**@FormUrlEncoded中传递JSON对象。可以使用@Body**注解传递JSON

@POST("/patch")
suspend fun insertTracks(
    @Body body: PlaylistInsertOperationRequest
): PlaylistResponse

为请求创建另一个类

data class PlaylistInsertOperationRequest(
   @SerializedName("diff") val diff : List<PlaylistInsertOperation>
)
nfeuvbwi

nfeuvbwi2#

我用InsertTracksOperation的列表创建了一个额外的数据类PlaylistDiffRequest,并覆盖了调用gsontoString函数。
第一个
在这种情况下,输出字段将是我所需要的

diff=[{"tracks":[{"albumId":"6250697","id":"35629702"}]}]

相关问题