![JAR search and dependency download from the Maven repository](/logo.png)
commonMain.com.harmony.kotlin.data.mapper.JsonMapper.kt Maven / Gradle / Ivy
package com.harmony.kotlin.data.mapper
import com.harmony.kotlin.error.DataSerializationException
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerializationException
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.json.Json
/**
* Map a json string to a class object
*/
class ModelToJsonStringMapper(
private val serializer: KSerializer,
private val json: Json = Json
) : Mapper {
override fun map(from: T): String = try {
json.encodeToString(serializer, from)
} catch (e: SerializationException) {
throw DataSerializationException(cause = e)
}
}
@Deprecated(message = "Replaced by ModelToJsonStringMapper")
class ListModelToJsonStringMapper(
private val serializer: KSerializer,
private val json: Json = Json
) : Mapper, String> {
override fun map(from: List): String = try {
json.encodeToString(ListSerializer(serializer), from)
} catch (e: SerializationException) {
throw DataSerializationException(cause = e)
}
}
/**
* Map a json string to a class object
*/
class JsonStringToModelMapper(
private val serializer: KSerializer,
private val json: Json = Json
) : Mapper {
override fun map(from: String): T = try {
json.decodeFromString(serializer, from)
} catch (e: SerializationException) {
throw DataSerializationException(cause = e)
}
}
/**
* Map a list json string to a list class object
*/
@Deprecated(message = "Replaced by JsonStringToModelMapper")
class JsonStringToListModelMapper(
private val serializer: KSerializer,
private val json: Json = Json
) : Mapper> {
override fun map(from: String): List = try {
json.decodeFromString(ListSerializer(serializer), from)
} catch (e: SerializationException) {
throw DataSerializationException(cause = e)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy