Moshi: не удалось найти сгенерированный класс JsonAdapter для класса

#kotlin #moshi

#kotlin #moshi

Вопрос:

Я следую примеру в https://proandroiddev.com/getting-started-using-moshi-for-json-parsing-with-kotlin-5a460bf3935a как можно ближе, но все равно не удается убежать.

В моем Gradle у меня есть

 plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
}
 

и

 dependencies {
    implementation "com.squareup.moshi:moshi:1.8.0"
    kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.8.0'
}
 

У меня есть класс

 @JsonClass(generateAdapter = true)
data class Movie (
    @Json(name = "vote_count") val voteCount: Int = -1,
    val id: Int,
    val title: String,
    @Json(name = "image_path") val imagePath: String,
    val overview: String
)
 

Когда я запускаю свой тест, как показано ниже

     @Test
    fun testMoshi() {
        val moviesJson: String = """
{
  "vote_count": 2026,
  "id": 19404,
  "title": "Example Movie",
  "image_path": "/example-movie-image.jpg",
  "overview": "Overview of example movie"
} 
        """.trimIndent()

        val moshi: Moshi = Moshi.Builder().build()
        val adapter: JsonAdapter<Movie> = moshi.adapter(Movie::class.java)
        val movie = adapter.fromJson(moviesJson)
    }
 

Сбой Failed to find the generated JsonAdapter class for class...

Что я пропустил?

Ответ №1:

По-видимому, это потому, что я поместил приведенное ниже в папку Test вместо основной папки.

 @JsonClass(generateAdapter = true)
data class Movie (
    @Json(name = "vote_count") val voteCount: Int = -1,
    val id: Int,
    val title: String,
    @Json(name = "image_path") val imagePath: String,
    val overview: String
)
 

Когда я перемещаю его в основную папку, он работает (поскольку теперь адаптер может быть сгенерирован)