Обзор сериализации JSON
Библиотека сериализации Kotlin позволяет легко преобразовывать объекты Kotlin в JSON и обратно. Класс Json — основной инструмент для этого. Он позволяет гибко настраивать создание и разбор JSON. Вы можете настроить экземпляры Json для обработки определённых особенностей JSON или использовать экземпляр по умолчанию для простых задач.
С помощью класса Json можно:
Сериализовать объекты Kotlin в строки JSON с помощью функции
encodeToString().Десериализовать строки JSON обратно в объекты Kotlin с помощью функции
decodeFromString().Работать напрямую с
JsonElementпри обработке сложных структур JSON с помощью функцийencodeToJsonElement()иdecodeFromJsonElement().Использовать экспериментальные функции-расширения для сериализации и десериализации источников ввода-вывода без создания промежуточных строк. Это касается потоков JVM, а также типов
kotlinx-ioи Okio.
Прежде чем начать, импортируйте следующие объявления из библиотеки сериализации:
import kotlinx.serialization.* import kotlinx.serialization.json.*
Вот простой пример использования экземпляра Json по умолчанию, который показывает, как работает сериализация JSON в Kotlin:
// Imports declarations from the serialization library
import kotlinx.serialization.*
import kotlinx.serialization.json.*
//sampleStart
@Serializable
data class User(val name: String, val age: Int)
fun main() {
// Uses the default Json instance
val json = Json
// Creates a User object
val user = User("Alice", 30)
// Converts the User object to a JSON string
val jsonString = json.encodeToString(user)
println(jsonString)
// {"name":"Alice","age":30}
// Converts the JSON string back to a User object
val deserializedUser = json.decodeFromString<User>(jsonString)
println(deserializedUser)
// User(name=Alice, age=30)
//sampleEnd
}
Помимо конфигурации по умолчанию, вы можете настроить экземпляр Json для конкретных случаев, например чтобы игнорировать неизвестные ключи:
// Imports declarations from the serialization library
import kotlinx.serialization.*
import kotlinx.serialization.json.*
//sampleStart
@Serializable
data class Project(val name: String)
// Configures a Json instance to ignore unknown keys
val customJson = Json {
ignoreUnknownKeys = true
}
fun main() {
val data = customJson.decodeFromString<Project>("""
{"name":"kotlinx.serialization","language":"Kotlin"}
""")
println(data)
// Project(name=kotlinx.serialization)
}
//sampleEnd
Что дальше
Узнайте, как настраивать экземпляры
Jsonдля различных сценариев сериализации и десериализации.Изучите расширенную обработку элементов JSON, чтобы изменять данные JSON и работать с ними до их разбора или сериализации.
Узнайте, как преобразовывать JSON при сериализации и десериализации, чтобы лучше контролировать свои данные.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/serialization-configure-json-serialization.html