Как распарсить Json на Kotlin?

Какие есть способы распарсить Json?

{
  "name": "Json Smith",
  "age": 30,
  "phones": [
    {
      "type": "home",
      "number": "542 666-1234"
    },
    {
      "type": "fax",
      "number": "653 666-4567"
    }
  ]
}

Ответы (1 шт):

Автор решения: Vadik

Чтобы распарсить Json на Kotlin, вы можете взять любую соответствующую библиотеку на Java. Но разные Java-библиотеки с разной степенью удобства ложатся на язык Kotlin.

Поэтому, кроме Java-библиотек, есть kotlinx.serialization — официальная библиотека от JetBrains, написанная на языке Kotlin.

Чтобы начать ей пользоваться, необходимо подключить плагин для Gradle:

plugins {
    ...
    id("org.jetbrains.kotlin.plugin.serialization") version "[версия котлин]"
}

И добавить зависимость для сериализации Json:

dependencies {
    ...
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:[версия]")
}

Далее, отметить все dto-классы аннотацией @Serializable:

@Serializable
class Person(val name: String, val age: Int, val phones: List<Phone>)

@Serializable
class Phone(val type: String, val number: String)

Теперь, чтобы распарсить Json из строки достаточно выполнить:

val person = Json.decodeFromString<Person>(jsonString)
→ Ссылка