hfhbd
05/04/2022, 7:40 AMdescriptor.getElementAnnotations(index)
, but the annotation for this property is not found. Did I miss something?hfhbd
05/04/2022, 7:41 AM@ExperimentalSerializationApi
internal fun SerialDescriptor.fixedLengthElement(index: Int) =
getElementAnnotations(index).filterIsInstance<FixedLength>().singleOrNull()
?: error("$serialName not annotated with @FixedLength")
@ExperimentalSerializationApi
@SerialInfo
public annotation class FixedLength(val length: Int)
// usage
override fun <T> encodeSerializableElement(
descriptor: SerialDescriptor,
index: Int,
serializer: SerializationStrategy<T>,
value: T
) {
serializer.serialize(
FixedLengthPrimitiveEncoder(
serializersModule,
descriptor.fixedLengthElement(index).length,
builder
), value
)
}
@Serializable
data class Sample(
@FixedLength(10) val date: Instant
)
hfhbd
05/04/2022, 8:46 AM