Lines Matching +full:test +full:. +full:rgb
5 This is the third chapter of the [Kotlin Serialization Guide](serialization-guide.md).
6 …'ll take a look at serializers in more detail, and we'll see how custom serializers can be written.
43 into its constituent properties is controlled by a _serializer_. So far we've been using automatica…
45 the [Serializable classes](/docs/basic-serialization.md#serializable-classes) section, or using bui…
46 the [Builtin classes](/docs/builtin-classes.md) section.
48 …ing example, let us take the following `Color` class with an integer value storing its `rgb` bytes.
51 import kotlinx.serialization.*
52 import kotlinx.serialization.json.*
57 class Color(val rgb: Int)
61 println(Json.encodeToString(green))
65 > You can get the full code [here](../guide/example/example-serializer-01.kt).
67 By default this class serializes its `rgb` property into JSON.
70 {"rgb":65280}
73 <!--- TEST -->
78 …of the [KSerializer] interface automatically generated by the Kotlin Serialization compiler plugin.
79 We can retrieve this instance using the `.serializer()` function on the class's companion object.
81 We can examine its [descriptor][KSerializer.descriptor] property that describes the structure of
82 the serialized class. We'll learn more details about that in the upcoming sections.
85 import kotlinx.serialization.*
89 class Color(val rgb: Int)
94 val colorSerializer: KSerializer<Color> = Color.serializer()
95 println(colorSerializer.descriptor)
99 > You can get the full code [here](../guide/example/example-serializer-02.kt).
102 Color(rgb: kotlin.Int)
105 <!--- TEST -->
108 is itself serialized, or when it is used as a property of other classes.
110 > You cannot define your own function `serializer()` on a companion object of a serializable class.
114 For generic classes, like the `Box` class shown in the [Generic classes](basic-serialization.md#gen…
115 the automatically generated `.serializer()` function accepts as many parameters as there are type p…
116 corresponding class. These parameters are of type [KSerializer], so the actual type argument's seri…
117 to be provided when constructing an instance of a serializer for a generic class.
120 import kotlinx.serialization.*
124 class Color(val rgb: Int)
133 val boxedColorSerializer = Box.serializer(Color.serializer())
134 println(boxedColorSerializer.descriptor)
138 > You can get the full code [here](../guide/example/example-serializer-03.kt). …
140 As we can see, a serializer was instantiated to serialize a concrete `Box<Color>`.
146 <!--- TEST -->
150 The serializers for the [primitive builtin classes](builtin-classes.md#primitives) can be retrieved
151 using `.serializer()` extensions.
154 import kotlinx.serialization.*
155 import kotlinx.serialization.builtins.*
160 val intSerializer: KSerializer<Int> = Int.serializer()
161 println(intSerializer.descriptor)
165 > You can get the full code [here](../guide/example/example-serializer-04.kt).
167 <!--- TEST
168 PrimitiveDescriptor(kotlin.Int)
173 [Builtin collection serializers](builtin-classes.md#lists), when needed, must be explicitly constru…
174 using the corresponding functions [ListSerializer()], [SetSerializer()], [MapSerializer()], etc.
176 corresponding number of their type parameters.
177 For example, we can produce a serializer for a `List<String>` in the following way.
180 import kotlinx.serialization.*
181 import kotlinx.serialization.builtins.*
186 val stringListSerializer: KSerializer<List<String>> = ListSerializer(String.serializer())
187 println(stringListSerializer.descriptor)
191 > You can get the full code [here](../guide/example/example-serializer-05.kt).
193 <!--- TEST
194 kotlin.collections.ArrayList(PrimitiveDescriptor(kotlin.String))
200 function to retrieve a serializer for an arbitrary Kotlin type in your source-code.
203 import kotlinx.serialization.*
209 class Color(val rgb: Int)
213 println(stringToColorMapSerializer.descriptor)
217 > You can get the full code [here](../guide/example/example-serializer-06.kt).
219 <!--- TEST
220 kotlin.collections.LinkedHashMap(PrimitiveDescriptor(kotlin.String), Color(rgb: kotlin.Int))
226 for such a class as `Color`. Let's study alternatives.
230 …want to serialize the `Color` class as a hex string with the green color represented as `"00ff00"`.
231 …achieve this, we write an object that implements the [KSerializer] interface for the `Color` class.
233 <!--- INCLUDE .*-serializer-.*
234 import kotlinx.serialization.*
235 import kotlinx.serialization.json.*
236 import kotlinx.serialization.encoding.*
237 import kotlinx.serialization.descriptors.*
242 …override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Color", PrimitiveKind.STRIN…
245 val string = value.rgb.toString(16).padStart(6, '0')
246 encoder.encodeString(string)
250 val string = decoder.decodeString()
251 return Color(string.toInt(16))
256 Serializer has three required pieces.
258 * The [serialize][SerializationStrategy.serialize] function implements [SerializationStrategy].
259 It receives an instance of [Encoder] and a value to serialize.
260 …It uses the `encodeXxx` functions of `Encoder` to represent a value as a sequence of primitives. T…
261 `encodeXxx` for each primitive type supported by serialization.
262 In our example, [encodeString][Encoder.encodeString] is used.
264 * The [deserialize][DeserializationStrategy.deserialize] function implements [DeserializationStrate…
266 …deserialized value. It uses the `decodeXxx` functions of `Decoder`, which mirror the corresponding…
267 In our example [decodeString][Decoder.decodeString] is used.
269 * The [descriptor][KSerializer.descriptor] property must faithfully explain what exactly the `encod…
270 …ions do so that a format implementation knows in advance what encoding/decoding methods they call.
271 …Some formats might also use it to generate a schema for the serialized data. For primitive seriali…
273 type that is being serialized.
274 …nd] describes the specific `encodeXxx`/`decodeXxx` method that is being used in the implementation.
277 > is unspecified, and may arbitrarily change in future updates.
279 The next step is to bind a serializer to a class. This is done with the [`@Serializable`][Serializa…
280 the [`with`][Serializable.with] property value.
284 class Color(val rgb: Int)
287 Now we can serialize the `Color` class as we did before.
292 println(Json.encodeToString(green))
296 > You can get the full code [here](../guide/example/example-serializer-07.kt).
298 We get the serial representation as the hex string we wanted.
304 <!--- TEST -->
306 Deserialization is also straightforward because we implemented the `deserialize` method.
310 …override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Color", PrimitiveKind.STRIN…
313 val string = value.rgb.toString(16).padStart(6, '0')
314 encoder.encodeString(string)
318 val string = decoder.decodeString()
319 return Color(string.toInt(16))
326 class Color(val rgb: Int)
329 val color = Json.decodeFromString<Color>("\"00ff00\"")
330 println(color.rgb) // prints 65280
334 > You can get the full code [here](../guide/example/example-serializer-08.kt).
336 <!--- TEST
340 It also works if we serialize or deserialize a different class with `Color` properties.
344 …override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Color", PrimitiveKind.STRIN…
347 val string = value.rgb.toString(16).padStart(6, '0')
348 encoder.encodeString(string)
352 val string = decoder.decodeString()
353 return Color(string.toInt(16))
360 data class Color(val rgb: Int)
367 val string = Json.encodeToString(data)
369 require(Json.decodeFromString<Settings>(string) == data)
373 > You can get the full code [here](../guide/example/example-serializer-09.kt).
375 Both `Color` properties are serialized as strings.
381 <!--- TEST -->
385 In the previous example, we represented the `Color` class as a string.
386 …rimitive type, therefore we used `PrimitiveClassDescriptor` and specialized `encodeString` method.
387 …tions would be if we have to serialize `Color` as another non-primitive type, let's say `IntArray`.
391 using [encodeSerializableValue][Encoder.encodeSerializableValue] and
392 [decodeSerializableValue][Decoder.decodeSerializableValue].
395 import kotlinx.serialization.builtins.IntArraySerializer
399 override val descriptor = SerialDescriptor("Color", delegateSerializer.descriptor)
403 (value.rgb shr 16) and 0xFF,
404 (value.rgb shr 8) and 0xFF,
405 value.rgb and 0xFF
407 encoder.encodeSerializableValue(delegateSerializer, data)
411 val array = decoder.decodeSerializableValue(delegateSerializer)
417 Note that we can't use default `Color.serializer().descriptor` here because formats that rely
418 on the schema may think that we would call `encodeInt` instead of `encodeSerializableValue`.
419 Neither we can use `IntArraySerializer().descriptor` directly — otherwise, formats that handle int …
420 can't tell if `value` is really a `IntArray` or a `Color`. Don't worry, this optimization would sti…
421 when serializing actual underlying int array.
423 …ormat can treat arrays specially is shown in the [formats guide](formats.md#format-specific-types).
429 class Color(val rgb: Int)
433 println(Json.encodeToString(green))
438 but may save some space when used with a `ByteArray` and a binary format.
440 > You can get the full code [here](../guide/example/example-serializer-10.kt).
446 <!--- TEST -->
452 with three properties—`r`, `g`, and `b`—so that JSON encodes it as an object.
454 we are going to use for its serialization. We also set the [SerialName] of this surrogate class to …
455 any format uses this name the surrogate looks like it is a `Color` class.
457 of the class in its `init` block.
464 require(r in 0..255 && g in 0..255 && b in 0..255)
470 …ustom subclass serial name](polymorphism.md#custom-subclass-serial-name) section in the chapter on…
472 Now we can use the `ColorSurrogate.serializer()` function to retrieve a plugin-generated serializer…
473 surrogate class.
477 …ated [SerialDescriptor] for the surrogate because it should be indistinguishable from the original.
481 override val descriptor: SerialDescriptor = ColorSurrogate.serializer().descriptor
484 …val surrogate = ColorSurrogate((value.rgb shr 16) and 0xff, (value.rgb shr 8) and 0xff, value.rgb …
485 encoder.encodeSerializableValue(ColorSurrogate.serializer(), surrogate)
489 val surrogate = decoder.decodeSerializableValue(ColorSurrogate.serializer())
490 return Color((surrogate.r shl 16) or (surrogate.g shl 8) or surrogate.b)
495 We bind the `ColorSerializer` serializer to the `Color` class.
499 class Color(val rgb: Int)
502 Now we can enjoy the result of serialization for the `Color` class.
507 println(Json.encodeToString(green))
511 > You can get the full code [here](../guide/example/example-serializer-11.kt).
517 <!--- TEST -->
521 There are some cases where a surrogate solution does not fit. Perhaps we want to avoid the performa…
523 resulting serial representation. In these cases we need to manually write a class
524 serializer which mimics the behaviour of a generated serializer.
530 Let's introduce it piece by piece. First, a descriptor is defined using the [buildClassSerialDescri…
531 The [element][ClassSerialDescriptorBuilder.element] function in the builder DSL automatically fetch…
532 … the corresponding fields by their type. The order of elements is important. They are indexed star…
543 > The "element" is a generic term here. What is an element of a descriptor depends on its [SerialKi…
544 …lements of a class descriptor are its properties, elements of a enum descriptor are its cases, etc.
547 the [CompositeEncoder] in its block. The difference between [Encoder] and [CompositeEncoder] is the…
548 has `encodeXxxElement` functions that correspond to the `encodeXxx` functions of the former. They m…
549 in the same order as in the descriptor.
553 encoder.encodeStructure(descriptor) {
554 encodeIntElement(descriptor, 0, (value.rgb shr 16) and 0xff)
555 encodeIntElement(descriptor, 1, (value.rgb shr 8) and 0xff)
556 encodeIntElement(descriptor, 2, value.rgb and 0xff)
560 The most complex piece of code is the `deserialize` function. It must support formats, like JSON, t…
561 can decode properties in an arbitrary order. It starts with the call to [decodeStructure] to
562 get access to a [CompositeDecoder]. Inside it we write a loop that repeatedly calls
563 [decodeElementIndex][CompositeDecoder.decodeElementIndex] to decode the index of the next element, …
564 element using [decodeIntElement][CompositeDecoder.decodeIntElement] in our example, and finally we …
565 `CompositeDecoder.DECODE_DONE` is encountered.
569 decoder.decodeStructure(descriptor) {
578 CompositeDecoder.DECODE_DONE -> break
582 require(r in 0..255 && g in 0..255 && b in 0..255)
591 …w we bind the resulting serializer to the `Color` class and test its serialization/deserialization.
595 data class Color(val rgb: Int)
599 val string = Json.encodeToString(color)
601 require(Json.decodeFromString<Color>(string) == color)
605 > You can get the full code [here](../guide/example/example-serializer-12.kt).
613 <!--- TEST -->
617 The implementation of the `deserialize` function from the previous section works with any format. H…
619 collections in order). With these formats the complex protocol of calling `decodeElementIndex` in t…
620 …er implementation can be used if the [CompositeDecoder.decodeSequentially] function returns `true`.
621 The plugin-generated serializers are actually conceptually similar to the below code.
634 encoder.encodeStructure(descriptor) {
635 encodeIntElement(descriptor, 0, (value.rgb shr 16) and 0xff)
636 encodeIntElement(descriptor, 1, (value.rgb shr 8) and 0xff)
637 encodeIntElement(descriptor, 2, value.rgb and 0xff)
643 decoder.decodeStructure(descriptor) {
656 CompositeDecoder.DECODE_DONE -> break
660 require(r in 0..255 && g in 0..255 && b in 0..255)
669 data class Color(val rgb: Int)
673 val string = Json.encodeToString(color)
675 require(Json.decodeFromString<Color>(string) == color)
679 > You can get the full code [here](../guide/example/example-serializer-13.kt).
681 <!--- TEST
687 Sometimes an application has to work with an external type that is not serializable.
688 Let us use [java.util.Date] as an example. As before, we start by writing an implementation of [KSe…
689 for the class. Our goal is to get a `Date` serialized as a long number of milliseconds following th…
690 approach from the [Primitive serializer](#primitive-serializer) section.
692 > In the following sections any kind of `Date` serializer would work. For example, if we want `Date…
694 > the [Composite serializer via surrogate](#composite-serializer-via-surrogate) section.
696 …when you need to serialize a 3rd-party Kotlin class that could have been serializable, but is not.
699 import java.util.Date
700 import java.text.SimpleDateFormat
705 … override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Date", PrimitiveKind.LONG)
706 override fun serialize(encoder: Encoder, value: Date) = encoder.encodeLong(value.time)
707 override fun deserialize(decoder: Decoder): Date = Date(decoder.decodeLong())
712 because we don't control the `Date` source code. There are several ways to work around that.
716 … `encodeToXxx` and `decodeFromXxx` functions have an overload with the first serializer parameter.
717 …n a non-serializable class, like `Date`, is the top-level class being serialized, we can use those.
721 val kotlin10ReleaseDate = SimpleDateFormat("yyyy-MM-ddX").parse("2016-02-15+00")
722 println(Json.encodeToString(DateAsLongSerializer, kotlin10ReleaseDate))
726 > You can get the full code [here](../guide/example/example-serializer-14.kt).
732 <!--- TEST -->
737 …r or the code will not compile. This is accomplished using the [`@Serializable`][Serializable] ann…
740 import java.util.Date
741 import java.text.SimpleDateFormat
744 … override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Date", PrimitiveKind.LONG)
745 override fun serialize(encoder: Encoder, value: Date) = encoder.encodeLong(value.time)
746 override fun deserialize(decoder: Decoder): Date = Date(decoder.decodeLong())
759 val data = ProgrammingLanguage("Kotlin", SimpleDateFormat("yyyy-MM-ddX").parse("2016-02-15+00"))
760 println(Json.encodeToString(data))
764 > You can get the full code [here](../guide/example/example-serializer-15.kt).
772 <!--- TEST -->
776 [`@Serializable`][Serializable] annotation can also be applied directly to the types.
777 …n a class that requires a custom serializer, such as `Date`, happens to be a generic type argument.
781 import java.util.Date
782 import java.text.SimpleDateFormat
785 … override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Date", PrimitiveKind.LONG)
786 override fun serialize(encoder: Encoder, value: Date) = encoder.encodeLong(value.time)
787 override fun deserialize(decoder: Decoder): Date = Date(decoder.decodeLong())
800 …al data = ProgrammingLanguage("Kotlin", listOf(df.parse("2023-07-06+00"), df.parse("2023-04-25+00"…
801 println(Json.encodeToString(data))
805 > You can get the full code [here](../guide/example/example-serializer-16.kt).
811 <!--- TEST -->
816 [UseSerializers] annotation at the beginning of the file.
825 import java.util.Date
826 import java.text.SimpleDateFormat
829 … override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Date", PrimitiveKind.LONG)
830 override fun serialize(encoder: Encoder, value: Date) = encoder.encodeLong(value.time)
831 override fun deserialize(decoder: Decoder): Date = Date(decoder.decodeLong())
835 Now a `Date` property can be used in a serializable class without additional annotations.
842 val data = ProgrammingLanguage("Kotlin", SimpleDateFormat("yyyy-MM-ddX").parse("2016-02-15+00"))
843 println(Json.encodeToString(data))
846 > You can get the full code [here](../guide/example/example-serializer-17.kt).
852 <!--- TEST -->
856 kotlinx.serialization tends to be the always-explicit framework when it comes to serialization stra…
857 they should be explicitly mentioned in `@Serializable` annotation. Therefore, we do not provide any…
858 configuration (except for [context serializer](#contextual-serialization) mentioned later).
861 …or classes like `Date` or `Instant` that have a fixed strategy of serialization across the project.
864 import java.util.Date
865 import java.text.SimpleDateFormat
868 …ride val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("DateAsLong", PrimitiveKind.LONG)
869 override fun serialize(encoder: Encoder, value: Date) = encoder.encodeLong(value.time)
870 override fun deserialize(decoder: Decoder): Date = Date(decoder.decodeLong())
874 …al descriptor: SerialDescriptor = PrimitiveSerialDescriptor("DateAsSimpleText", PrimitiveKind.LONG)
876 … override fun serialize(encoder: Encoder, value: Date) = encoder.encodeString(format.format(value))
877 override fun deserialize(decoder: Decoder): Date = format.parse(decoder.decodeString())
895 val data = ProgrammingLanguage(format.parse("2016-02-15+00"), format.parse("2022-07-07+00"))
896 println(Json.encodeToString(data))
900 > You can get the full code [here](../guide/example/example-serializer-18.kt).
906 <!--- TEST -->
910 Let us take a look at the following example of the generic `Box<T>` class.
912 strategy for it.
920 examples for the `Color` type. A generic class serializer is instantiated with serializers
921 …r its generic parameters. We saw this in the [Plugin-generated generic serializer](#plugin-generat…
923 parameters as the type has generic parameters. Let us write a `Box<T>` serializer that erases itsel…
924 serialization, delegating everything to the underlying serializer of its `data` property.
928 override val descriptor: SerialDescriptor = dataSerializer.descriptor
929 … fun serialize(encoder: Encoder, value: Box<T>) = dataSerializer.serialize(encoder, value.contents)
930 override fun deserialize(decoder: Decoder) = Box(dataSerializer.deserialize(decoder))
934 Now we can serialize and deserialize `Box<Project>`.
941 val box = Box(Project("kotlinx.serialization"))
942 val string = Json.encodeToString(box)
944 println(Json.decodeFromString<Box<Project>>(string))
948 > You can get the full code [here](../guide/example/example-serializer-19.kt).
950 The resulting JSON looks like the `Project` class was serialized directly.
953 {"name":"kotlinx.serialization"}
954 Box(contents=Project(name=kotlinx.serialization))
957 <!--- TEST -->
961 The above custom serializers worked in the same way for every format. However, there might be forma…
962 features that a serializer implementation would like to take advantage of.
964 * The [Json transformations](json.md#json-transformations) section of the [Json](json.md) chapter p…
965 of serializers that utilize JSON-specific features.
968 in the [Format-specific types](formats.md#format-specific-types) section of
969 the [Alternative and custom formats (experimental)](formats.md) chapter.
971 …er proceeds with a generic approach to tweaking the serialization strategy based on the context.
976 fully defined at compile-time. The exception was the [Passing a serializer manually](#passing-a-ser…
977 approach, but it worked only on a top-level object. You might need to change the serialization
978 …he serialized object tree at run-time, with the strategy being selected in a context-dependent way.
979 For example, you might want to represent `java.util.Date` in JSON format as an ISO 8601 string or a…
980 depending on a version of a protocol you are serializing data for. This is called _contextual_ seri…
981 is supported by a built-in [ContextualSerializer] class. Usually we don't have to use this serializ…
985 the [UseSerializers] annotation. Let's see an example utilizing the former.
988 import java.util.Date
989 import java.text.SimpleDateFormat
1004 val data = ProgrammingLanguage("Kotlin", SimpleDateFormat("yyyy-MM-ddX").parse("2016-02-15+00"))
1005 println(Json.encodeToString(data))
1010 functions. Without it we'll get a "Serializer for class 'Date' is not found" exception.
1012 > See [here](../guide/example/example-serializer-20.kt) for an example that produces that exception.
1014 <!--- TEST LINES_START
1015 Exception in thread "main" kotlinx.serialization.SerializationException: Serializer for class 'Date…
1016 …sure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.
1020 import kotlinx.serialization.modules.*
1021 import java.util.Date
1022 import java.text.SimpleDateFormat
1025 … override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Date", PrimitiveKind.LONG)
1026 override fun serialize(encoder: Encoder, value: Date) = encoder.encodeLong(value.time)
1027 override fun deserialize(decoder: Decoder): Date = Date(decoder.decodeLong())
1041 at run-time to serialize which contextually-serializable classes. This is done using the
1043 register serializers. In the below example we use the [contextual][_contextual] function with the s…
1044 class this serializer is defined for is fetched automatically via the `reified` type parameter.
1053 … {}][Json()] builder function and the [serializersModule][JsonBuilder.serializersModule] property.
1056 > the [JSON configuration](json.md#json-configuration) section.
1062 Now we can serialize our data with this `format`.
1066 val data = ProgrammingLanguage("Kotlin", SimpleDateFormat("yyyy-MM-ddX").parse("2016-02-15+00"))
1067 println(format.encodeToString(data))
1071 > You can get the full code [here](../guide/example/example-serializer-21.kt).
1076 <!--- TEST -->
1080 …t we can register serializer instance in the module for a class we want to serialize contextually.
1081 …have constructor parameters](#custom-serializers-for-a-generic-type) — type arguments serializers.
1087 contextual(BoxSerializer(Int.serializer()))
1095 // args[0] contains Int.serializer() or String.serializer(), depending on the usage
1103 > the [Merging library serializers modules](polymorphism.md#merging-library-serializers-modules) se…
1104 > the [Polymorphism](polymorphism.md) chapter.
1110 using the [Serializer] annotation on an object with the [`forClass`][Serializer.forClass] property.
1120 You must bind this serializer to a class using one of the approaches explained in this chapter. We'…
1121 …llow the [Passing a serializer manually](#passing-a-serializer-manually) approach for this example.
1125 val data = Project("kotlinx.serialization", "Kotlin")
1126 println(Json.encodeToString(ProjectSerializer, data))
1130 > You can get the full code [here](../guide/example/example-serializer-22.kt).
1135 {"name":"kotlinx.serialization","language":"Kotlin"}
1138 <!--- TEST -->
1143 [Backing fields are serialized](basic-serialization.md#backing-fields-are-serialized). _External_ s…
1144 `Serializer(forClass = ...)` has no access to backing fields and works differently.
1145 … serializes only _accessible_ properties that have setters or are part of the primary constructor.
1146 The following example shows this.
1166 val data = Project("kotlinx.serialization").apply { stars = 9000 }
1167 println(Json.encodeToString(ProjectSerializer, data))
1171 > You can get the full code [here](../guide/example/example-serializer-23.kt).
1173 The output is shown below.
1176 {"name":"kotlinx.serialization","stars":9000}
1179 <!--- TEST -->
1183 The next chapter covers [Polymorphism](polymorphism.md).
1186 [java.util.Date]: https://docs.oracle.com/javase/8/docs/api/java/util/Date.html
1189 <!--- INDEX kotlinx-serialization-core/kotlinx.serialization -->
1191 …zable]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serial…
1192 …lizer]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serial…
1193 …rializer.descriptor]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/…
1194 …tegy.serialize]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotli…
1195 …]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializati…
1196 …y.deserialize]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlin…
1197 …: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializatio…
1198 [Serializable.with]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/ko…
1199 …alName]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.seria…
1200 …zers]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.seriali…
1201 …r]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializat…
1202 …extual]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.seria…
1203 …https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/…
1204 …alizer]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.seria…
1205 …Serializer.forClass]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/…
1207 <!--- INDEX kotlinx-serialization-core/kotlinx.serialization.builtins -->
1209 …()]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializa…
1210 …r()]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializ…
1211 …r()]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializ…
1213 <!--- INDEX kotlinx-serialization-core/kotlinx.serialization.encoding -->
1215 …der]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializ…
1216 …der.encodeString]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kot…
1217 …der]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializ…
1218 …der.decodeString]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kot…
1219 ….encodeSerializableValue]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-…
1220 ….decodeSerializableValue]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-…
1221 …re]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializa…
1222 … https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization…
1223 …re]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializa…
1224 … https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization…
1225 ….decodeElementIndex]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/…
1226 ….decodeIntElement]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/ko…
1227 ….decodeSequentially]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/…
1229 <!--- INDEX kotlinx-serialization-core/kotlinx.serialization.descriptors -->
1231 …tps://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.de…
1232 … https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization…
1233 …https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.…
1234 …ps://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.des…
1235 …iptorBuilder.element]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core…
1236 …]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializati…
1238 <!--- INDEX kotlinx-serialization-core/kotlinx.serialization.modules -->
1240 … https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization…
1241 …)]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serializat…
1242 …ps://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.mod…
1243 …extual]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.seria…
1246 <!--- INDEX kotlinx-serialization-json/kotlinx.serialization.json -->
1248 [Json]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.seriali…
1249 [Json()]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.seria…
1250 ….serializersModule]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/k…