Moshi @Json аннотация не работает для com.github.kittinunf.fuel.moshi.moshiDeserializerOf? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть ResponseObject:

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

обратите внимание, что первый параметр не является верблюдом (например, notCamelCase) в теле ответа JSON.

Далее я запускаю вызов REST с библиотекой FUEL :

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

Чтобы использовать camelcase в моем следующем коде, я изменил объект ResponseObject следующим образом:

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

как это описано здесь ....

В этом случае notCamelCase равно нулю. @Json не работает только с com.github.kittinunf.fuel.moshi.moshiDeserializerOf?Что не так?

1 Ответ

0 голосов
/ 09 мая 2019

Используйте @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

...