kotlinx.serializationの雑なメモ
Jsonの項目名を指定する
json
{
"id": 1,
"name": "aaa",
"created_at": "Sun May 20 2018 20:33:49 GMT+0900 (JST)"
}
User.kt
@Serializable
data class User(
val id: Long,
val name: String,
@SerialName("created_at")
val createdAt: String
){}
配列の場合
-
JSON.parse
の第一引数にKSerializer<T>.list
を指定する
json
[
{
"id": 1,
"name": "aaa"
},
{
"id": 2,
"name": "bbb"
}
]
User.kt
@Serializable
data class User(
val id: Long,
val name: String
){}
Parse.kt
fun parseList(json: String) = JSON.parse<List<User>>(User.serializer().list, json)
Jsonに含まれていない属性がある場合
-
@Optional
アノテーションを付ける - Nullableにする
- デフォルト引数にnullを指定する
json
[
{
"id": 1,
"name": "aaa"
"age": 20
},
{
"id": 2,
"name": "bbb"
}
]
User.kt
@Serializable
data class User(
val id: Long,
val name: String,
@Optional
val age: Int? = null
){}