получить список проанализированных элементов json

#kotlin #gson

#kotlin #gson

Вопрос:

Я преобразовал строку json в следующую структуру объекта, используя gson:

 data class Base (
        val expand: String,
        val startAt: Long,
        val maxResults: Long,
        val total: Long,
        val issues: List<Issue>
)

data class Issue (
        val expand: String,
        val id: String,
        val self: String,
        val key: String,
        val fields: Fields
)

data class Fields (
        val summary: String,
        val issuetype: Issuetype,
        val customfield10006: Long? = null,
        val created: String,
        val customfield11201: String? = null,
        val status: Status,
        val customfield10002: Customfield10002? = null,
        val customfield10003: String? = null
)
  

Все работает нормально, а также объектная модель верна, потому что я могу получить доступ к каждому элементу объекта.
Однако я столкнулся с проблемой, заключающейся в том, что я не знаю, как получить список всех элементов поля. На данный момент я выяснил, как получить доступ только к одному элементу (с помощью индекса и get()-функции):

 val baseObject = gson.fromJson(response, Base::class.java)
val fieldsList = baseObject.issues.get(0).fields
  

На самом деле я хочу иметь список всех элементов поля, а не только одного. Есть ли функция gson, позволяющая мне это сделать? Я не смог найти ничего об этом в документации gson для java.

Комментарии:

1. вы имеете в виду baseObject.issues.flatMap { it.fields } ?

Ответ №1:

Вам не нужно искать какую-либо функцию gson, когда вы уже создали baseObject . Вам просто нужно получить из каждого issue его поля, и вы можете использовать map функцию для достижения этой цели, она преобразует каждую проблему в новый тип, чтобы вы могли получать поля проблемы там

 val fieldFromAllIssues: List<Fields> = baseObject.issues.map { it.fields }
  

it в этом контексте возникает одна проблема. Больше объяснений о it находится здесь