使用 Moshi 和 Retrofit 解析动态字符串对象

Parse object of dynamic string with Moshi and Retrofit

我有一个 JSON 如下所示。

{
    "code": "success",
    "response": {
        "data": {
            "xyz": "abc.pdf",
            "abc: "efgh.pdf"
        }
    },
    "message": "Files downloaded Successfully"
}

响应对象中的内部数据,键是动态的(xyz、abc 等)。我在改装转换器中使用 Moshi。我的数据类如下

data class RestResponse<T> (
    val code: String,
    val message: String,
    val response: T
)

data class ProposalDownloadResponse(val data: DownloadData)

data class DownloadData(val list: Map<String, String>)

但我在解析后在列表中得到 null虽然我有数据

Refrofit 函数如下

@POST
suspend fun downloadProposal(
    @Url url: String,
    @Header("accessToken") key: String,
    @Body flightDetails: FlightDetails,
): GenericResponse<RestResponse<ProposalDownloadResponse>>

原因是您正在嵌套不需要的对象。您的 data 本身属于 Map<String, String> 类型,因此 DownloadData 不是必需的。 如下使用。

data class ProposalDownloadResponse(val data: Map<String, String>)