現象
クラスを定義しているにも関わらず、クラスが見つからないと怒られる
kotlinx.serialization.SerializationException: Serializer for class 'Weather' is not found.
こんな感じで定義しているのに↓
@Serializable
data class CurrentWheather(
@SerialName("temperature") val temperature : Double,
@SerialName("windspeed") val windspeed : Double,
@SerialName("winddirection") val winddirection : Double,
@SerialName("weathercode") val weathercode : Int,
@SerialName("time") val time : String
)
@Serializable
data class Weather(
@SerialName("latitude") val latitude : Double,
@SerialName("longitude") val longitude : Double,
@SerialName("generationtime_ms") val generationtime_ms : Double,
@SerialName("utc_offset_seconds") val utc_offset_seconds : Int,
@SerialName("timezone") val timezone : String,
@SerialName("timezone_abbreviation") val timezone_abbreviation : String,
@SerialName("elevation") val elevation :Double,
@SerialName("current_weather") val current_weather : CurrentWheather
)
原因と対策
プラグインの宣言が足りなかったため、うまく読み込めていなかった模様。
以下をbuid.gradleに追加して「Sync Project with Gradle Files」して再ビルド
プロジェクトのbuild.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.3.1' apply false
id 'com.android.library' version '7.3.1' apply false
id 'org.jetbrains.kotlin.android' version '1.7.20' apply false
id 'org.jetbrains.kotlin.plugin.serialization' version '1.7.20' // これ (バージョンは↑と同じ)
}
moduleのbuild.gradle
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlinx-serialization' //これ
}

コメント