1*57b5a4a6SAndroid Build Coastguard Worker // This file was automatically generated from json.md by Knit tool. Do not edit. 2*57b5a4a6SAndroid Build Coastguard Worker package example.exampleJson23 3*57b5a4a6SAndroid Build Coastguard Worker 4*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.* 5*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.json.* 6*57b5a4a6SAndroid Build Coastguard Worker 7*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.builtins.* 8*57b5a4a6SAndroid Build Coastguard Worker 9*57b5a4a6SAndroid Build Coastguard Worker @Serializable 10*57b5a4a6SAndroid Build Coastguard Worker data class Project( 11*57b5a4a6SAndroid Build Coastguard Worker val name: String, 12*57b5a4a6SAndroid Build Coastguard Worker @Serializable(with = UserListSerializer::class) 13*57b5a4a6SAndroid Build Coastguard Worker val users: List<User> 14*57b5a4a6SAndroid Build Coastguard Worker ) 15*57b5a4a6SAndroid Build Coastguard Worker 16*57b5a4a6SAndroid Build Coastguard Worker @Serializable 17*57b5a4a6SAndroid Build Coastguard Worker data class User(val name: String) 18*57b5a4a6SAndroid Build Coastguard Worker 19*57b5a4a6SAndroid Build Coastguard Worker object UserListSerializer : JsonTransformingSerializer<List<User>>(ListSerializer(User.serializer())) { 20*57b5a4a6SAndroid Build Coastguard Worker // If response is not an array, then it is a single object that should be wrapped into the array transformDeserializenull21*57b5a4a6SAndroid Build Coastguard Worker override fun transformDeserialize(element: JsonElement): JsonElement = 22*57b5a4a6SAndroid Build Coastguard Worker if (element !is JsonArray) JsonArray(listOf(element)) else element 23*57b5a4a6SAndroid Build Coastguard Worker } 24*57b5a4a6SAndroid Build Coastguard Worker 25*57b5a4a6SAndroid Build Coastguard Worker fun main() { 26*57b5a4a6SAndroid Build Coastguard Worker println(Json.decodeFromString<Project>(""" 27*57b5a4a6SAndroid Build Coastguard Worker {"name":"kotlinx.serialization","users":{"name":"kotlin"}} 28*57b5a4a6SAndroid Build Coastguard Worker """)) 29*57b5a4a6SAndroid Build Coastguard Worker println(Json.decodeFromString<Project>(""" 30*57b5a4a6SAndroid Build Coastguard Worker {"name":"kotlinx.serialization","users":[{"name":"kotlin"},{"name":"jetbrains"}]} 31*57b5a4a6SAndroid Build Coastguard Worker """)) 32*57b5a4a6SAndroid Build Coastguard Worker } 33