Модификация / Spring Parsing Data Class для объекта JSON - PullRequest
1 голос
/ 18 марта 2019

У меня есть следующий класс данных:

data class Thing(
    val id: Long?,
    val title: String,
    val description: String,
)

В моем API:

@POST("doThings")
    fun createThings(
        @Query("thing") thing: Thing
    ): Call<StatusResponse>

Я получил ошибку: статус ": 500," ошибка ":" Внутренняя ошибка сервера"," message ":" Неожиданный символ ('E' (код 69))

В API весны я сделал вывод журнала, и объект класса данных прибыл как:

"Thing (id = null, title = Что-то, description = Что-то еще) "

В Retrofit Builder есть конвертер GSON, но, думаю, он не работает должным образом:

Retrofit.Builder()
            .client(get())
            .baseUrl(get<Context>().getString(R.string.base_url))
            .addCallAdapterFactory(get<CoroutineCallAdapterFactory>())
            .addConverterFactory(get<GsonConverterFactory>())
            .build()

Есть предложения?Спасибо

1 Ответ

0 голосов
/ 19 марта 2019

Вы используете аннотацию @Query, которая означает, что ваш Thing будет сериализован как String и передан в качестве параметра запроса в URL.

Вместо этого вы хотите использовать @Bodyаннотация, которая сериализует объект Thing как JSON и добавляет его в тело POST.

Этот ответ даст вам более подробную информацию о том, как использовать эту аннотацию: https://stackoverflow.com/a/21423093/5577048

...