#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
находится здесь