Получить только один параметр из json объекта через модификацию (gson) - PullRequest
0 голосов
/ 01 мая 2020

Json:

JSON

Мне нужно получить только поле идентификатора из источника. Класс данных:

data class Article(
    val sourceId: String,
    val author: String,
    val title: String,
    ...
)

Конверторная фабрика GsonConvertorFactory

1 Ответ

1 голос
/ 01 мая 2020

В предоставленной вами 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).

...