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