В предоставленной вами JSON source
- сложный объект, поэтому вы не можете определить его как строку, если не создадите пользовательский десериализатор . Однако быстрый способ заставить это работать - создать другой набор классов для имитации структуры c JSON, например:
data class Source(
val id: String
)
data class Article(
val source: Source,
val author: String,
val title: String
)
Затем вы можете использовать ее следующим образом:
fun main() {
val json = """ {
"source": {
"id": "bbc-news",
"name": "BBC News"
},
"author": "BBC News",
"title": "Afrobeat pioneer Tony Allen dies aged 79"
}
""".trimIndent()
val gson = GsonBuilder().create()
val article = gson.fromJson(json, Article::class.java)
println(article)
}
Печать: Article(source=Source(id=bbc-news), author=BBC News, title=Afrobeat pioneer Tony Allen dies aged 79)
.