json - 通过改造(gson)从json对象中只获取一个参数
问题描述
杰森:
我只需要从源中获取 id 字段。数据类:
data class Article(
val sourceId: String,
val author: String,
val title: String,
...
)
转换器工厂是 GsonConvertorFactory
解决方案
在您提供的 JSON 中,source
是一个复杂对象,因此您不能将其定义为字符串,除非您创建自定义反序列化器。不过,让这个工作的一个快速方法是创建另一组类来模仿 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)
。
推荐阅读
- c - 如何从一个循环到另一个循环获取更改的值
- git - 如何在 GIT 中恢复已删除的文件?
- java - JVM:通过三个步骤签署 PDF 文件
- python - Python 找不到模块,即使在路径更新和为子目录创建空白 __init__.py 文件之后
- ios - iOS 按钮与自定义键盘上的边缘手势冲突
- sql - 如何用 SQL 确定小数类型列的小数位数
- linux - 在期望脚本中发送不可打印的字符
- javascript - 如何在 React Native 中从 ImagePicker 中检索 blob/文件
- python - Kivy:使用 kivy.storage.jsonstore 在另一个 JSON 对象中添加 JSON 对象
- python - 创建一个列表,包括行名、列名和数据框中的值