kotlinx.serialization. Вот как это работает:Настройка проекта
Добавьте в "build.gradle" следующие зависимости:
plugins {
kotlin("jvm") version "1.8.0"
kotlin("plugin.serialization") version "1.8.0"
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0")
}Создание модели данных
Создайте data-класс с аннотацией
@Serializable:
@Serializable
data class User(
val name: String,
val age: Int,
val email: String
)Преобразование объекта в JSON
Используйте метод
encodeToString():
fun main() {
val user = User("Иван", 25, "ivan@example.com")
// Преобразование в JSON строку
val jsonString = Json.encodeToString(user)
println(jsonString) // {"name":"Иван","age":25,"email":"ivan@example.com"}
}Дополнительные возможности
Работа с коллекциями
val users = listOf(
User("Иван", 25, "ivan@example.com"),
User("Петр", 30, "petr@example.com")
)
val jsonArray = Json.encodeToString(users)Настройка формата JSON
Можно изменить параметры форматирования:
val prettyPrintedJson = Json {
prettyPrint = true
isLenient = true
}.encodeToString(user)Игнорирование полей
Если нужно исключить некоторые поля из сериализации:
@Serializable
data class User(
val name: String,
val age: Int,
@Transient val password: String // Это поле не будет включено в JSON
)Пример полного кода
import kotlinx.serialization.*
import kotlinx.serialization.json.*
@Serializable
data class User(
val name: String,
val age: Int,
val email: String
)
fun main() {
val user = User("Иван", 25, "ivan@example.com")
// Базовая сериализация
val jsonString = Json.encodeToString(user)
println("Базовый JSON: $jsonString")
// Форматированный JSON
val formattedJson = Json {
prettyPrint = true
}.encodeToString(user)
println("\nФорматированный JSON:")
println(formattedJson)
}Этот код создаст JSON-строку из объекта и покажет два варианта вывода: компактный и форматированный.