Moshi @Json 注释不适用于 com.github.kittinunf.fuel.moshi.moshiDeserializerOf?

Moshi @Json annotation not working for com.github.kittinunf.fuel.moshi.moshiDeserializerOf?

我有一个响应对象:

data class ResponseObject(
        val notCamelcase: String,
        val param2: String,
        val param3: String
)

请注意响应 JSON 正文中的第一个参数不是驼峰式(如 notCamelCase)。

Furtheron,我触发了 REST 调用 with the FUEL library:

Fuel.get(someParam)
        .responseObject(moshiDeserializerOf(ResponseObject::class.java)) { _, response, result ->
            try {
                if (response.statusCode == HttpURLConnection.HTTP_OK) {
                    val responseObject = result.component1()
        }

以下是我的导入:

import com.github.kittinunf.fuel.Fuel
import com.github.kittinunf.fuel.core.FuelError
import com.github.kittinunf.fuel.core.FuelManager
import com.github.kittinunf.fuel.core.HttpException
import com.github.kittinunf.fuel.moshi.moshiDeserializerOf

为了在我的以下代码中使用驼峰式大小写,我修改了 ResponseObject,例如:

data class ResponseObject(
        @Json(name="notCamelcase")
        val notCamelCase: String,
        val param2: String,
        val param3: String
)

就这样is described here....

在这种情况下,notCamelCase 为空。 @Json 是否只与 com.github.kittinunf.fuel.moshi.moshiDeserializerOf 一起工作?怎么了?

为 Moshi kotlin 使用 @field:Json() 注解。

data class ResponseObject(
    @field:Json(name="notCamelcase")
    val notCamelCase: String,
    val param2: String,
    val param3: String
)

参考:https://github.com/square/moshi/issues/315 如讨论中所述,这仍然是一种解决方法。官方 Kotlin 支持是正确的方式:https://github.com/square/moshi#kotlin