通过 retrofit(gson) 从 json 对象中只获取一个参数
Get only one parameter from json object via retrofit(gson)
Json:
我只需要从源中获取 id 字段。数据class:
data class Article(
val sourceId: String,
val author: String,
val title: String,
...
)
转换器工厂是 GsonConvertorFactory
在你提供的JSON中,source
是一个复杂的对象,所以你不能将它定义为一个字符串,除非你创建一个custom deserialiser。不过,实现此功能的一种快速方法是创建另一组 类 来模仿 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)
。
Json:
我只需要从源中获取 id 字段。数据class:
data class Article(
val sourceId: String,
val author: String,
val title: String,
...
)
转换器工厂是 GsonConvertorFactory
在你提供的JSON中,source
是一个复杂的对象,所以你不能将它定义为一个字符串,除非你创建一个custom deserialiser。不过,实现此功能的一种快速方法是创建另一组 类 来模仿 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)
。