在科特林中用重复元素展平列表

flatten list with repeated element in kotlin

我有以下数据class作为数据传输对象。

data class Continent(
    val continent: String,
    val countries: List<String>
)

所以 JSON 响应如下所示。

{
  "content": [
       {
           "continent": "Europe",
           "countries": [
              "France",
              "Germany"
           ]
       }
  ]
}

然而,我想做的是:

{
  "content": [
        {
            "continent": "Europe",
            "country": "France"
        },
        {
            "continent": "Europe",
            "country": "Germany"
        }
  ]
}

我想肯定有一些 kotlin 集合函数可以应用。 由于我在第一个代码块中写的dto无法审核,所以我必须在服务层应用收集功能并相应地做出响应dto。

你能告诉我吗?提前致谢。

data class Country(
    val continent: String,
    val country: String
)

fun List<ContinentResponse>.toCountries(): List<Country> =
    flatMap { r -> r.countries.map { country -> Country(r.continent, country) } }