2023-04-18 18:12:30 +09:00
Kotlin Serializerで"配列またはPrimitive型"を取る値を扱いたい場合。 今回のケースだと:
的な事をしたかった。
object StringListSerializer :
JsonTransformingSerializer<String>(serializer()) {
// If response is not an array, then it is a single object
override fun transformDeserialize(element: JsonElement): JsonElement =
if (element !is JsonArray) element.jsonPrimitive else element[0]
}
これを使いたいプロパティに@Serializable(with = StringListSerializer::class)
する。
要素が配列でないならPrimitiveを返し、配列なら0番目を返すっていうすごいシンプルな感じの奴。たどりつくまでに結構苦労した