Как работать с сериализацией KotlinX для типов ArrayList <String>и Date с Algolia - PullRequest
1 голос
/ 17 января 2020

Я пытаюсь использовать kotlinx serialization с Algolia для типов ArrayList<String> и Date, но я не могу понять технику serialization. Любые указатели, потому что я прибег к ручному способу, который не рекомендуется Algolia.

1 Ответ

0 голосов
/ 17 января 2020

Установите этот флажок

kotlinx.serialization

import kotlinx.serialization.*
import kotlinx.serialization.internal.*
import java.util.*

@Serializable
class DateWrapper(val date: Date)

@Serializer(forClass = Date::class)
object DateSerializer: KSerializer<Date> {
    private val df: DateFormat = SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SSS")

    override fun save(output: KOutput, obj: Date) {
        output.writeStringValue(df.format(obj))
    }

    override fun load(input: KInput): Date {
        return df.parse(input.readStringValue())
    }

    override val serialClassDesc: KSerialClassDesc = SerialClassDescImpl("Date")
}

Зарегистрируйте его при запуске приложения:

kotlinx.serialization.registerSerializer("java.util.Date", DateSerializer)

JSON.stringify(DateWrapper(Date())) выдаст вам {"date": ["Date", "10/11/2019 12: 50: 10.665"]}

...