Здравствуйте, я создаю сервер отдыха, используя ktor в своем приложении для Android. Это работает очень хорошо, но когда я звоню, я получаю все данные, но не получаю нулевых данных. Что мне сделать, чтобы их получить.
вот мой код
install(ContentNegotiation) {
gson()
}
routing {
get("StorageAndControlService/config/get/{key}") {
val key = call.parameters["key"]
lateinit var config:Any
when(key){
"TRAVELER_MODE" -> {config = settings.data.isStandardMode
if (config){
call.respond(mapOf("current" to "STD","pending" to null))
}else{
call.respond(mapOf("current" to "SUB","pending" to null))
}}
}
}
}
и вот что я получаю от звонка
я должен получить ожидаемое значение. Что мне сделать, чтобы это было видно?
В Ktor библиотека Gson используется для сериализации и десериализации данных JSON. По умолчанию Gson не сериализует нулевые значения. Чтобы включить нулевые значения в ваши ответы JSON, вам необходимо настроить экземпляр Gson для сериализации нулевых значений.
Вот как вы можете настроить конфигурацию Gson, включив в нее нулевые значения:
Import the necessary Gson library functions.
Configure the Gson instance to serialize null values using serializeNulls().
import com.google.gson.GsonBuilder
import io.ktor.application.*
import io.ktor.features.ContentNegotiation
import io.ktor.gson.gson
import io.ktor.response.respond
import io.ktor.routing.get
import io.ktor.routing.routing
fun Application.module() {
install(ContentNegotiation) {
gson {
serializeNulls() // Enable serialization of null values
}
}
routing {
get("StorageAndControlService/config/get/{key}") {
val key = call.parameters["key"]
lateinit var config: Any
when (key) {
"TRAVELER_MODE" -> {
config = settings.data.isStandardMode
if (config) {
call.respond(mapOf("current" to "STD", "pending" to null))
} else {
call.respond(mapOf("current" to "SUB", "pending" to null))
}
}
}
}
}}
Есть функция
respondNullable. Вы пробовали это?