All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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