package net.axay.kspigot.serialization import net.axay.kspigot.main.ValueHolder interface SpigotSerializable { /** * Converts this serializable object * into the corresponding spigot object. */ fun toSpigot(): T } interface SpigotSerialzableCompanion /** * @return A json string. */ fun SpigotSerializable<*>.serialize(pretty: Boolean = true): String = ValueHolder.getGson(pretty).toJson(this) /** * Deserializes the given json string and * returns the deserialized object. */ @Suppress("unused") inline fun SpigotSerialzableCompanion.deserialize(json: String): T = ValueHolder.getGson().fromJson(json, T::class.java)