Jorge Bo
04/08/2022, 5:45 PMjson {
serializersModule = SerializersModule {
contextual(Map::class) { MarketMapSerializer }
contextual(Map::class) { StationMapSerializer }}
}
object MarketMapSerializer :
JsonTransformingSerializer<Map<String, Market>>(MapSerializer(String.serializer(), Market.serializer())) {
override fun transformDeserialize(element: JsonElement): JsonElement {
return JsonObject(element.jsonObject.filterNot { (k, _) ->
k == "token"
})
}
}
object StationMapSerializer :
JsonTransformingSerializer<Map<String, Station>>(MapSerializer(String.serializer(), Station.serializer())) {
override fun transformDeserialize(element: JsonElement): JsonElement {
return JsonObject(element.jsonObject.filterNot { (k, _) ->
k == "token"
})
}
}
and i'm getting this exception. Exception in thread "main" kotlinx.serialization.modules.SerializerAlreadyRegisteredException: Contextual serializer or serializer provider for class kotlin.collections.Map already registered in this module. Is it possible to specify types in contextual mapping?ephemient
04/08/2022, 6:33 PMclass CustomMapSerializer<K, V>(
keySerializer: KSerializer<K>,
valueSerializer: KSerializer<V>
) : JsonTransformingSerializer<Map<K, V>>(
MapSerializer(keySerializer, valueSerializer)
)
Json {
serializersModule = SerializersModule {
contextual(Map::class) { (keySerializer, valueSerializer) ->
CustomMapSerializer(keySerializer, valueSerializer)
}
}
}