Lines Matching +full:- +full:- +full:json
1 <!--- TEST_NAME JsonTest -->
3 # JSON features
5 This is the fifth chapter of the [Kotlin Serialization Guide](serialization-guide.md).
6 …pter, we'll walk through features of [JSON](https://www.json.org/json-en.html) serialization avail…
10 <!--- TOC -->
12 * [Json configuration](#json-configuration)
13 * [Pretty printing](#pretty-printing)
14 * [Lenient parsing](#lenient-parsing)
15 * [Ignoring unknown keys](#ignoring-unknown-keys)
16 * [Alternative Json names](#alternative-json-names)
17 * [Encoding defaults](#encoding-defaults)
18 * [Explicit nulls](#explicit-nulls)
19 * [Coercing input values](#coercing-input-values)
20 * [Allowing structured map keys](#allowing-structured-map-keys)
21 * [Allowing special floating-point values](#allowing-special-floating-point-values)
22 * [Class discriminator for polymorphism](#class-discriminator-for-polymorphism)
23 * [Class discriminator output mode](#class-discriminator-output-mode)
24 * [Decoding enums in a case-insensitive manner](#decoding-enums-in-a-case-insensitive-manner)
25 * [Global naming strategy](#global-naming-strategy)
27 * [Json elements](#json-elements)
28 * [Parsing to Json element](#parsing-to-json-element)
29 * [Types of Json elements](#types-of-json-elements)
30 * [Json element builders](#json-element-builders)
31 * [Decoding Json elements](#decoding-json-elements)
32 * [Encoding literal Json content (experimental)](#encoding-literal-json-content-experimental)
33 * [Serializing large decimal numbers](#serializing-large-decimal-numbers)
34 …quoted value of `null` is forbidden](#using-jsonunquotedliteral-to-create-a-literal-unquoted-value…
35 * [Json transformations](#json-transformations)
36 * [Array wrapping](#array-wrapping)
37 * [Array unwrapping](#array-unwrapping)
38 * [Manipulating default values](#manipulating-default-values)
39 * [Content-based polymorphic deserialization](#content-based-polymorphic-deserialization)
40 …e behavior of the plugin generated serializer](#extending-the-behavior-of-the-plugin-generated-ser…
41 * [Under the hood (experimental)](#under-the-hood-experimental)
42 * [Maintaining custom JSON attributes](#maintaining-custom-json-attributes)
44 <!--- END -->
46 ## Json configuration
48 The default [Json] implementation is quite strict with respect to invalid inputs. It enforces Kotli…
49 restricts Kotlin values that can be serialized so that the resulting JSON representations are stand…
50 Many non-standard JSON features are supported by creating a custom instance of a JSON _format_.
52 To use a custom JSON format configuration, create your own [Json] class instance from an existing
53 instance, such as a default `Json` object, using the [Json()] builder function. Specify parameter v…
54 …arentheses via the [JsonBuilder] DSL. The resulting `Json` format instance is immutable and thread…
55 it can be simply stored in a top-level property.
58 > may cache format-specific additional information about the classes they serialize.
60 This chapter shows configuration features that [Json] supports.
62 <!--- INCLUDE .*-json-.*
64 import kotlinx.serialization.json.*
65 -->
69 By default, the [Json] output is a single line. You can configure it to pretty print the output (th…
73 val format = Json { prettyPrint = true }
84 > You can get the full code [here](../guide/example/example-json-01.kt).
95 <!--- TEST -->
99 By default, [Json] parser enforces various JSON restrictions to be as specification-compliant as po…
100 (see [RFC-4627]). Particularly, keys and string literals must be quoted. Those restrictions can be …
101 …sonBuilder.isLenient] property. With `isLenient = true`, you can parse quite freely-formatted data:
104 val format = Json { isLenient = true }
123 > You can get the full code [here](../guide/example/example-json-02.kt).
125 You get the object, even though all keys of the source JSON, string and enum values are unquoted:
132 > regardless of the `isLenient` flag, since such JSON is syntactically valid.
134 <!--- TEST -->
138 JSON format is often used to read the output of third-party services or in other dynamic environmen…
144 val format = Json { ignoreUnknownKeys = true }
157 > You can get the full code [here](../guide/example/example-json-03.kt).
165 <!--- TEST -->
167 ### Alternative Json names
169 It's not a rare case when JSON fields are renamed due to a schema version change.
170 …an use the [`@SerialName` annotation](basic-serialization.md#serial-field-names) to change the nam…
172 To support multiple JSON names for the one Kotlin property, there is the [JsonNames] annotation:
180 val project = Json.decodeFromString<Project>("""{"name":"kotlinx.serialization"}""")
182 val oldProject = Json.decodeFromString<Project>("""{"title":"kotlinx.coroutines"}""")
187 > You can get the full code [here](../guide/example/example-json-04.kt).
189 As you can see, both `name` and `title` Json fields correspond to `name` property:
198 unless you want to do some fine-tuning.
200 <!--- TEST -->
205 See the [Defaults are not encoded](basic-serialization.md#defaults-are-not-encoded-by-default) sect…
210 val format = Json { encodeDefaults = true }
225 > You can get the full code [here](../guide/example/example-json-05.kt).
233 <!--- TEST -->
237 By default, all `null` values are encoded into JSON strings, but in some cases you may want to omit…
240 If you set property to `false`, fields with `null` values are not encoded into JSON even if the pro…
241 default `null` value. When decoding such JSON, the absence of a property value is treated as `null`…
245 val format = Json { explicitNulls = false }
258 val json = format.encodeToString(data)
259 println(json)
260 println(format.decodeFromString<Project>(json))
264 > You can get the full code [here](../guide/example/example-json-06.kt).
266 As you can see, `version`, `website` and `description` fields are not present in output JSON on the…
276 > Encoding/decoding of properties like this — nullable with a non-null default — becomes asymmetric…
279 See [coerceInputValues](#coercing-input-values) below for details.
283 <!--- TEST -->
287 JSON formats that from third parties can evolve, sometimes changing the field types.
289 The default [Json] implementation is strict with respect to input types as was demonstrated in
290 the [Type safety is enforced](basic-serialization.md#type-safety-is-enforced) section. You can rela…
297 * `null` inputs for non-nullable types
301 or with a `null` if [explicitNulls](#explicit-nulls) flag is set to `false` and a property is nulla…
303 > This list may be expanded in the future, so that [Json] instance configured with this property be…
306 See the example from the [Type safety is enforced](basic-serialization.md#type-safety-is-enforced) …
309 val format = Json { coerceInputValues = true }
322 > You can get the full code [here](../guide/example/example-json-07.kt).
330 <!--- TEST -->
332 Example of using this flag together with [explicitNulls](#explicit-nulls) to coerce invalid enum va…
340 val json = Json {
346 val brush = json.decodeFromString<Brush>("""{"foreground":"pink", "background":"purple"}""")
351 > You can get the full code [here](../guide/example/example-json-08.kt).
361 <!--- TEST -->
365 JSON format does not natively support the concept of a map with structured keys. Keys in JSON objec…
367 You can enable non-standard support for structured keys with
370 This is how you can serialize a map with keys of a user-defined class:
373 val format = Json { allowStructuredMapKeys = true }
387 > You can get the full code [here](../guide/example/example-json-09.kt).
389 The map with structured keys gets represented as JSON array with the following items: `[key1, value…
395 <!--- TEST -->
397 ### Allowing special floating-point values
399 By default, special floating-point values like [Double.NaN] and infinities are not supported in JSO…
400 the JSON specification prohibits it.
405 val format = Json { allowSpecialFloatingPointValues = true }
418 > You can get the full code [here](../guide/example/example-json-10.kt).
420 This example produces the following non-stardard JSON output, yet it is a widely used encoding for
427 <!--- TEST -->
435 val format = Json { classDiscriminator = "#class" }
452 > You can get the full code [here](../guide/example/example-json-11.kt).
455 control over the resulting JSON object:
461 <!--- TEST -->
463 …cify different class discriminators for different hierarchies. Instead of Json instance property, …
483 Discriminator specified in the annotation has priority over discriminator in Json configuration:
485 <!--- INCLUDE
497 -->
501 val format = Json { classDiscriminator = "#class" }
509 > You can get the full code [here](../guide/example/example-json-12.kt).
517 <!--- TEST -->
521 … for serializing and deserializing [polymorphic class hierarchies](polymorphism.md#sealed-classes).
530 val format = Json { classDiscriminatorMode = ClassDiscriminatorMode.NONE }
546 > You can get the full code [here](../guide/example/example-json-13.kt).
557 <!--- TEST -->
559 ### Decoding enums in a case-insensitive manner
561 [Kotlin's naming policy recommends](https://kotlinlang.org/docs/coding-conventions.html#property-na…
562 using either uppercase underscore-separated names or upper camel case names.
563 [Json] uses exact Kotlin enum values names for decoding by default.
564 However, sometimes third-party JSONs have such values named in lowercase or some mixed case.
565 In this case, it is possible to decode enum values in a case-insensitive manner using [JsonBuilder.…
569 val format = Json { decodeEnumsCaseInsensitive = true }
582 > You can get the full code [here](../guide/example/example-json-14.kt).
592 <!--- TEST -->
596 If properties' names in Json input are different from Kotlin ones, it is recommended to specify the…
597 for each property explicitly using [`@SerialName` annotation](basic-serialization.md#serial-field-n…
600 …Json] instance. `kotlinx.serialization` provides one strategy implementation out of the box, the […
607 val format = Json { namingStrategy = JsonNamingStrategy.SnakeCase }
615 > You can get the full code [here](../guide/example/example-json-15.kt).
628 non-transformed names, [JsonNames] annotation can be used instead.
635 … strategies are not friendly to actions like Find Usages/Rename in IDE, full-text search by grep, …
641 <!--- TEST -->
649 …ntation for Base64](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io.encoding/-base64/) lists
681 see [custom serializers](serializers.md#custom-serializers).
706 val encoded = Json.encodeToString(value)
708 val decoded = Json.decodeFromString<Value>(encoded)
713 > You can get the full code [here](../guide/example/example-json-16.kt)
720 Notice the serializer we wrote is not dependent on `Json` format, therefore, it can be used in any …
723 … serializer globally using typealias](serializers.md#specifying-serializer-globally-using-typealia…
729 <!--- TEST -->
731 ## Json elements
733 Aside from direct conversions between strings and JSON objects, Kotlin serialization offers APIs th…
734 other ways of working with JSON in the code. For example, you might need to tweak the data before i…
740 ### Parsing to Json element
742 A string can be _parsed_ into an instance of [JsonElement] with the [Json.parseToJsonElement] funct…
744 It just parses a JSON and forms an object representing it:
748 val element = Json.parseToJsonElement("""
755 > You can get the full code [here](../guide/example/example-json-17.kt).
757 A `JsonElement` prints itself as a valid JSON:
763 <!--- TEST -->
765 ### Types of Json elements
767 A [JsonElement] class has three direct subtypes, closely following JSON grammar:
769 * [JsonPrimitive] represents primitive JSON elements, such as string, number, boolean, and null.
774 * [JsonArray] represents a JSON `[...]` array. It is a Kotlin [List] of `JsonElement` items.
776 * [JsonObject] represents a JSON `{...}` object. It is a Kotlin [Map] from `String` keys to `JsonEl…
781 and similar ones for other types. This is how you can use them for processing JSON whose structure …
785 val element = Json.parseToJsonElement("""
798 > You can get the full code [here](../guide/example/example-json-18.kt).
806 <!--- TEST -->
810 ### Json element builders
813 [buildJsonArray] and [buildJsonObject]. They provide a DSL to define the resulting JSON structure. …
814 is similar to Kotlin standard library collection builders, but with a JSON-specific convenience
815 of more type-specific overloads and inner builder functions. The following example shows
838 > You can get the full code [here](../guide/example/example-json-19.kt).
840 As a result, you get a proper JSON string:
846 <!--- TEST -->
848 ### Decoding Json elements
851 the [Json.decodeFromJsonElement] function:
862 val data = Json.decodeFromJsonElement<Project>(element)
867 > You can get the full code [here](../guide/example/example-json-20.kt).
875 <!--- TEST -->
877 ### Encoding literal Json content (experimental)
879 …is experimental and requires opting-in to [the experimental Kotlinx Serialization API](compatibili…
886 The JSON specification does not restrict the size or precision of numbers, however it is not possib…
896 val format = Json { prettyPrint = true }
913 > You can get the full code [here](../guide/example/example-json-21.kt).
915 Even though `pi` was defined as a number with 30 decimal places, the resulting JSON does not reflec…
916 …s truncated to 15 decimal places, and the String is wrapped in quotes - which is not a JSON number.
925 <!--- TEST -->
932 val format = Json { prettyPrint = true }
937 // use JsonUnquotedLiteral to encode raw JSON content
954 > You can get the full code [here](../guide/example/example-json-22.kt).
966 <!--- TEST -->
970 (This demonstration uses a [JsonPrimitive] for simplicity. For a more re-usable method of handling …
971 [Json Transformations](#json-transformations) below.)
984 val piObject: JsonObject = Json.decodeFromString(piObjectJson)
994 > You can get the full code [here](../guide/example/example-json-23.kt).
996 …act value of `pi` is decoded, with all 30 decimal places of precision that were in the source JSON.
1002 <!--- TEST -->
1017 > You can get the full code [here](../guide/example/example-json-24.kt).
1020 …x.serialization.json.internal.JsonEncodingException: Creating a literal unquoted value of 'null' i…
1023 <!--- TEST LINES_START -->
1026 ## Json transformations
1028 To affect the shape and contents of JSON output after serialization, or adapt input to deserializat…
1032 serializer to a problem of manipulating a Json elements tree.
1038 …nteraction with `Encoder` or `Decoder`, this class asks you to supply transformations for JSON tree
1044 The first example is an implementation of JSON array wrapping for lists.
1046 Consider a REST API that returns a JSON array of `User` objects, or a single object (not wrapped in…
1052 <!--- INCLUDE
1054 -->
1070 …section [Constructing collection serializers](serializers.md#constructing-collection-serializers)):
1080 Now you can test the code with a JSON array or a single JSON object as inputs.
1084 println(Json.decodeFromString<Project>("""
1087 println(Json.decodeFromString<Project>("""
1093 > You can get the full code [here](../guide/example/example-json-25.kt).
1102 <!--- TEST -->
1106 …plement the `transformSerialize` function to unwrap a single-element list into a single JSON object
1109 <!--- INCLUDE
1123 -->
1132 <!--- INCLUDE
1134 -->
1136 Now, if you serialize a single-element list of objects from Kotlin:
1141 println(Json.encodeToString(data))
1145 > You can get the full code [here](../guide/example/example-json-26.kt).
1147 You end up with a single JSON object, not an array with one element:
1153 <!--- TEST -->
1157 Another kind of useful transformation is omitting specific values from the output JSON, for example…
1161 but you need it omitted from the JSON when it is equal to `Kotlin` (we can all agree that Kotlin sh…
1163 the [Plugin-generated serializer](serializers.md#plugin-generated-serializer) for the `Project` cla…
1171 // Filter out top-level key value pair with the key "language" and the value "Kotlin"
1173 (k, v) -> k == "language" && v.jsonPrimitive.content == "Kotlin"
1178 In the example below, we are serializing the `Project` class at the top-level, so we explicitly
1179 pass the above `ProjectSerializer` to [Json.encodeToString] function as was shown in
1180 the [Passing a serializer manually](serializers.md#passing-a-serializer-manually) section:
1185 println(Json.encodeToString(data)) // using plugin-generated serializer
1186 println(Json.encodeToString(ProjectSerializer, data)) // using custom serializer
1190 > You can get the full code [here](../guide/example/example-json-27.kt).
1199 <!--- TEST -->
1201 ### Content-based polymorphic deserialization
1204 (also known as _class discriminator_) in the incoming JSON object to determine the actual serializer
1208 the actual type by the shape of JSON, for example by the presence of a specific key.
1214 …have to be `sealed` as recommended in the [Sealed classes](polymorphism.md#sealed-classes) section,
1215 > because we are not going to take advantage of the plugin-generated code that automatically select…
1218 <!--- INCLUDE
1220 -->
1237 the `owner` key in the JSON object.
1242 "owner" in element.jsonObject -> OwnedProject.serializer()
1243 else -> BasicProject.serializer()
1248 When you use this serializer to serialize data, either [registered](polymorphism.md#registered-subc…
1257 val string = Json.encodeToString(ListSerializer(ProjectSerializer), data)
1259 println(Json.decodeFromString(ListSerializer(ProjectSerializer), string))
1263 > You can get the full code [here](../guide/example/example-json-28.kt).
1265 No class discriminator is added in the JSON output:
1272 <!--- TEST -->
1276 For example, to add a preliminary modification of JSON elements or to add processing of unknown val…
1283 In this example, we use `transformDeserialize` function to rename `basic-name` key into `name` so i…
1299 return if ("basic-name" in jsonObject) {
1300 val nameElement = jsonObject["basic-name"] ?: throw IllegalStateException()
1310 val project = Json.decodeFromString<Project>("""{"type":"basic","basic-name":"example"}""")
1315 > You can get the full code [here](../guide/example/example-json-29.kt).
1322 <!--- TEST -->
1331 Here are some useful things about custom serializers with [Json]:
1333 …der] can be cast to [JsonEncoder], and [Decoder] to [JsonDecoder], if the current format is [Json].
1337 * Both [`JsonDecoder`][JsonDecoder.json] and [`JsonEncoder`][JsonEncoder.json] have the `json` prop…
1338 which returns [Json] instance with all settings that are currently in use.
1339 * [Json] has the [encodeToJsonElement][Json.encodeToJsonElement] and [decodeFromJsonElement][Json.d…
1341 Given all that, it is possible to implement two-stage conversion `Decoder -> JsonElement -> value` …
1342 `value -> JsonElement -> Encoder`.
1346 <!--- INCLUDE
1349 -->
1367 // Decoder -> JsonDecoder
1368 require(decoder is JsonDecoder) // this class can be decoded only by Json
1369 // JsonDecoder -> JsonElement
1371 // JsonElement -> value
1374 return Response.Ok(decoder.json.decodeFromJsonElement(dataSerializer, element))
1378 // Encoder -> JsonEncoder
1379 require(encoder is JsonEncoder) // This class can be encoded only by Json
1380 // value -> JsonElement
1382 is Response.Ok -> encoder.json.encodeToJsonElement(dataSerializer, value.data)
1383 is Response.Error -> buildJsonObject { put("error", value.message) }
1385 // JsonElement -> JsonEncoder
1403 val string = Json.encodeToString(responses)
1405 println(Json.decodeFromString<List<Response<Project>>>(string))
1409 > You can get the full code [here](../guide/example/example-json-30.kt).
1411 This gives you fine-grained control on the representation of the `Response` class in the JSON outpu…
1418 <!--- TEST -->
1420 ### Maintaining custom JSON attributes
1422 A good example of custom JSON-specific serializer would be a deserializer
1423 that packs all unknown JSON properties into a dedicated field of `JsonObject` type.
1427 <!--- INCLUDE
1430 -->
1436 However, the default plugin-generated serializer requires details
1437 to be a separate JSON object and that's not what we want.
1439 To mitigate that, write an own serializer that uses the fact that it works only with the `Json` for…
1449 // Cast to JSON-specific interface
1450 val jsonInput = decoder as? JsonDecoder ?: error("Can be deserialized only by JSON")
1451 // Read the whole content as JSON
1452 val json = jsonInput.decodeJsonElement().jsonObject
1454 val name = json.getValue("name").jsonPrimitive.content
1455 val details = json.toMutableMap()
1466 Now it can be used to read flattened JSON details as `UnknownProject`:
1470 …println(Json.decodeFromString(UnknownProjectSerializer, """{"type":"unknown","name":"example","mai…
1474 > You can get the full code [here](../guide/example/example-json-31.kt).
1480 <!--- TEST -->
1482 ---
1487 <!-- references -->
1488 [RFC-4627]: https://www.ietf.org/rfc/rfc4627.txt
1491 <!-- stdlib references -->
1492 [Double]: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-double/
1493 [Double.NaN]: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-double/-na-n.html
1494 [List]: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/
1495 [Map]: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/
1497 <!--- MODULE /kotlinx-serialization-core -->
1498 <!--- INDEX kotlinx-serialization-core/kotlinx.serialization -->
1500 …://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-seri…
1501 …linlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-inheritabl…
1502 …tps://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k…
1503 …ttps://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-…
1504 …otlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-keep-gen…
1506 <!--- INDEX kotlinx-serialization-core/kotlinx.serialization.encoding -->
1508 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.encodi…
1509 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization.encodi…
1511 <!--- MODULE /kotlinx-serialization-json -->
1512 <!--- INDEX kotlinx-serialization-json/kotlinx.serialization.json -->
1514 [Json]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.seriali…
1515 [Json()]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.seria…
1516 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1517 …lang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-bui…
1518 …inlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-b…
1519 ….org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-builder…
1520 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1521 ….org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-builder…
1522 …lang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-bui…
1523 …ang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-buil…
1524 …g.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-builde…
1525 …g/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-builder/al…
1526 …i/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-builder/allow-…
1527 …nlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-bu…
1528 …otlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-jso…
1529 …rg/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-builder/c…
1530 …rg/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-class-discrimi…
1531 …kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-class-discriminator-m…
1532 …inx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-class-discriminator-mode/…
1533 …org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-builder/…
1534 …lang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-bui…
1535 …tlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json…
1536 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1537 [Json.parseToJsonElement]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-j…
1538 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1539 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1540 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1541 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1542 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1543 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/j…
1544 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/j…
1545 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/j…
1546 …ps://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.jso…
1547 …/kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/in…
1548 …ps://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.jso…
1549 …/kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/lo…
1550 …otlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/buil…
1551 …otlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/buil…
1552 [Json.decodeFromJsonElement]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serializatio…
1553 …linlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-…
1554 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1555 …nlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-tr…
1556 [Json.encodeToString]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/…
1557 …ng.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-conte…
1558 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1559 …//kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-…
1560 …ng.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-decod…
1561 …ng.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-encod…
1562 …JsonDecoder.json]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kot…
1563 …JsonEncoder.json]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kot…
1564 [Json.encodeToJsonElement]: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-…
1566 <!--- END -->