Ответ сервера с нулевым значением

Здравствуйте, я создаю сервер отдыха, используя 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))
                }}

            }


        }
    }

и вот что я получаю от звонка

я должен получить ожидаемое значение. Что мне сделать, чтобы это было видно?

Есть функция respondNullable. Вы пробовали это?

Saeed Entezari 22.05.2024 10:24
0
1
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В 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))
                }
            }
        }
    }
}}

Другие вопросы по теме