Sumeet Parmar
data class NetworkResponse<T> (val data: T)
ephemient
T
NetworkResponse
@Serializable private data class NetworkResponse<T>( @SerialName("$") val data: T, )
$
json.decodeFromString<NetworkResponse<Foo>>(...)
NetworkResponse(json.decodeFromString<Foo>(...))
@Serializable(with = NetworkResponseSerializer::class) class NetworkResponse<T>(val data: T) class NetworkResponseSerializer<T>(private val tSerializer: KSerializer<T>) : KSerializer<NetworkResponse<T>> { override val descriptor: SerialDescriptor = SerialDescriptor("NetworkResponse<${tSerializer.descriptor.serialName}>", tSerializer.descriptor) override fun deserialize(decoder: Decoder): NetworkResponse<T> = NetworkResponse(decoder.decodeSerializableValue(tSerializer)) override fun serialize(encoder: Encoder, value: NetworkResponse<T>) { encoder.encodeSerializableValue(tSerializer, value.data) } }
retrofit
data
A modern programming language that makes developers happier.