feature: add pretty option for serializer and extention String.deserialize<Entity>()

This commit is contained in:
2019-08-03 20:26:20 +02:00
parent ae184cd52c
commit 15c347e3fd

View File

@@ -32,15 +32,16 @@ class Serializer(val mapper: ObjectMapper = jacksonObjectMapper()) {
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
} }
fun <T> serialize(source: EntityI<T>): String { fun <T> serialize(source: EntityI<T>, pretty: Boolean = false): String {
return mapper.writeValueAsString(source) return if (pretty) mapper.writerWithDefaultPrettyPrinter().writeValueAsString(source)
else mapper.writeValueAsString(source)
} }
fun <E: EntityI<*>> deserialize(json: String, valueTypeRef: TypeReference<E>): E { fun <E: EntityI<*>> deserialize(json: String, valueTypeRef: TypeReference<E>): E {
return this.mapper.readValue(json, valueTypeRef) return this.mapper.readValue(json, valueTypeRef)
} }
inline fun <T, reified E: EntityI<T?>?> deserialize(json: String): E { inline fun <reified E: EntityI<*>> deserialize(json: String): E? {
return this.mapper.readValue(json) return this.mapper.readValue(json)
} }
@@ -57,8 +58,9 @@ class Serializer(val mapper: ObjectMapper = jacksonObjectMapper()) {
} }
} }
fun <T> EntityI<T?>.serialize() = Serializer().serialize(this) fun <T> EntityI<T?>.serialize(pretty: Boolean = false) = Serializer().serialize(this, pretty)
inline fun <T, reified E: EntityI<T?>> E.deserialize(json: String) = Serializer().deserialize(json, this) inline fun <reified E: EntityI<*>> E.deserialize(json: String) = Serializer().deserialize(json, this)
inline fun <reified E: EntityI<*>> String.deserialize() = Serializer().deserialize<E>(this)
class EntityUuidDeserializer<T: UuidEntity> @JvmOverloads constructor(vc: Class<*>? = null): StdDeserializer<T>(vc) { class EntityUuidDeserializer<T: UuidEntity> @JvmOverloads constructor(vc: Class<*>? = null): StdDeserializer<T>(vc) {