JsonFormat.kt
package com.hexagonkt.serialization.dsl.json
import com.dslplatform.json.DslJson
import com.dslplatform.json.PrettifyOutputStream
import com.dslplatform.json.runtime.Settings
import com.hexagonkt.core.media.APPLICATION_JSON
import com.hexagonkt.core.media.MediaType
import com.hexagonkt.serialization.SerializationFormat
import java.io.InputStream
import java.io.OutputStream
open class JsonFormat(private val prettyPrint: Boolean = true) : SerializationFormat {
override val textFormat: Boolean = true
override val mediaType: MediaType = APPLICATION_JSON
private val dslJson: DslJson<Any> =
DslJson(Settings.withRuntime())
override fun serialize(instance: Any, output: OutputStream) {
val stream = if (prettyPrint) PrettifyOutputStream(output) else output
dslJson.serialize(instance, stream)
}
override fun parse(input: InputStream): Any =
dslJson.deserialize(Any::class.java, input) ?: error("Error parsing input")
}