diff options
Diffstat (limited to 'core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt')
-rw-r--r-- | core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt | 60 |
1 files changed, 51 insertions, 9 deletions
diff --git a/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt b/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt index 147f25d9..4bd81012 100644 --- a/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt +++ b/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt @@ -9,6 +9,7 @@ import kotlinx.serialization.* import kotlinx.serialization.internal.* import kotlin.reflect.* import kotlinx.serialization.descriptors.* +import kotlin.time.Duration /** * Returns a nullable serializer for the given serializer of non-null type. @@ -33,7 +34,7 @@ public fun <K, V> PairSerializer( * Returns built-in serializer for [Map.Entry]. * Resulting serializer represents entry as a structure with a single key-value pair. * E.g. `Pair(1, 2)` and `Map.Entry(1, 2)` will be serialized to JSON as - * `{"first": 1, "second": 2}` and {"1": 2} respectively. + * `{"first": 1, "second": 2}` and `{"1": 2}` respectively. */ public fun <K, V> MapEntrySerializer( keySerializer: KSerializer<K>, @@ -74,6 +75,14 @@ public fun Byte.Companion.serializer(): KSerializer<Byte> = ByteSerializer public fun ByteArraySerializer(): KSerializer<ByteArray> = ByteArraySerializer /** + * Returns serializer for [UByteArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind. + * Each element of the array is serialized one by one with [UByte.Companion.serializer]. + */ +@ExperimentalSerializationApi +@ExperimentalUnsignedTypes +public fun UByteArraySerializer(): KSerializer<UByteArray> = UByteArraySerializer + +/** * Returns serializer for [Short] with [descriptor][SerialDescriptor] of [PrimitiveKind.SHORT] kind. */ public fun Short.Companion.serializer(): KSerializer<Short> = ShortSerializer @@ -85,6 +94,14 @@ public fun Short.Companion.serializer(): KSerializer<Short> = ShortSerializer public fun ShortArraySerializer(): KSerializer<ShortArray> = ShortArraySerializer /** + * Returns serializer for [UShortArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind. + * Each element of the array is serialized one by one with [UShort.Companion.serializer]. + */ +@ExperimentalSerializationApi +@ExperimentalUnsignedTypes +public fun UShortArraySerializer(): KSerializer<UShortArray> = UShortArraySerializer + +/** * Returns serializer for [Int] with [descriptor][SerialDescriptor] of [PrimitiveKind.INT] kind. */ public fun Int.Companion.serializer(): KSerializer<Int> = IntSerializer @@ -96,6 +113,14 @@ public fun Int.Companion.serializer(): KSerializer<Int> = IntSerializer public fun IntArraySerializer(): KSerializer<IntArray> = IntArraySerializer /** + * Returns serializer for [UIntArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind. + * Each element of the array is serialized one by one with [UInt.Companion.serializer]. + */ +@ExperimentalSerializationApi +@ExperimentalUnsignedTypes +public fun UIntArraySerializer(): KSerializer<UIntArray> = UIntArraySerializer + +/** * Returns serializer for [Long] with [descriptor][SerialDescriptor] of [PrimitiveKind.LONG] kind. */ public fun Long.Companion.serializer(): KSerializer<Long> = LongSerializer @@ -107,6 +132,14 @@ public fun Long.Companion.serializer(): KSerializer<Long> = LongSerializer public fun LongArraySerializer(): KSerializer<LongArray> = LongArraySerializer /** + * Returns serializer for [ULongArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind. + * Each element of the array is serialized one by one with [ULong.Companion.serializer]. + */ +@ExperimentalSerializationApi +@ExperimentalUnsignedTypes +public fun ULongArraySerializer(): KSerializer<ULongArray> = ULongArraySerializer + +/** * Returns serializer for [Float] with [descriptor][SerialDescriptor] of [PrimitiveKind.FLOAT] kind. */ public fun Float.Companion.serializer(): KSerializer<Float> = FloatSerializer @@ -193,27 +226,36 @@ public fun <K, V> MapSerializer( /** * Returns serializer for [UInt]. */ -@ExperimentalSerializationApi -@ExperimentalUnsignedTypes public fun UInt.Companion.serializer(): KSerializer<UInt> = UIntSerializer /** * Returns serializer for [ULong]. */ -@ExperimentalSerializationApi -@ExperimentalUnsignedTypes public fun ULong.Companion.serializer(): KSerializer<ULong> = ULongSerializer /** * Returns serializer for [UByte]. */ -@ExperimentalSerializationApi -@ExperimentalUnsignedTypes public fun UByte.Companion.serializer(): KSerializer<UByte> = UByteSerializer /** * Returns serializer for [UShort]. */ -@ExperimentalSerializationApi -@ExperimentalUnsignedTypes public fun UShort.Companion.serializer(): KSerializer<UShort> = UShortSerializer + +/** + * Returns serializer for [Duration]. + * It is serialized as a string that represents a duration in the ISO-8601-2 format. + * + * The result of serialization is similar to calling [Duration.toIsoString], for deserialization is [Duration.parseIsoString]. + */ +public fun Duration.Companion.serializer(): KSerializer<Duration> = DurationSerializer + +/** + * Returns serializer for [Nothing]. + * Throws an exception when trying to encode or decode. + * + * It is used as a dummy in case it is necessary to pass a type to a parameterized class. At the same time, it is expected that this generic type will not participate in serialization. + */ +@ExperimentalSerializationApi +public fun NothingSerializer(): KSerializer<Nothing> = NothingSerializer |