Возвращение класса данных kotlin с использованием загрузки WebFlux и Spring - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь вернуть ServerResponse с классом данных, но получаю эту ошибку.

Не удалось записать HTTP-сообщение: org.springframework.http.converter.HttpMessageNotWritableException: Нет конвертеранайдено для возвращаемого значения типа: class org.springframework.web.reactive.function.server.DefaultEntityResponseBuilder $ DefaultEntityResponse

Я думаю, это потому, что он не находит общедоступного получателя.

Верхняя часть моего ответа:

data class MyDataResponse(
        @SerializedName("metadata") val metadata:Metadata,
        @SerializedName("mydata") val my data: MyData?)

Как это используется:

fun getMyData(): Mono<ServerResponse> = ServerResponse
        . ok().body(Mono.just(myService.getMyData()), MyDataResponse::class.java)

Итак, могу ли я сделать это в Kotlin, или мне нужно написать свои модели вJava?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Из того, что я вижу, вы используете Gson для десериализации ваших данных.Сериализатором по умолчанию в WebFlux является Jackson, который поддерживает сериализацию Kotlin (de).

Как описано здесь , вам необходимо добавить модуль Джексона Котлина какзависимость, которая будет автоматически подобрана и зарегистрирована.

0 голосов
/ 29 мая 2018

Я нашел решение, оно не идеальное, но оно работает.

fun getMyData(): MyDataResponse { 
return myService.getMyData()
}

В моем случае это возвращает JSON объекта.

Я использовал data class и все работает.

...