現象
クラスを定義しているにも関わらず、クラスが見つからないと怒られる
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' //これ }
コメント