Giter VIP home page Giter VIP logo

serialization's Introduction

Serialization

Сериализация является процессом преобразования данных, привыкших приложением к формату, который может быть передан по сети или сохранен в базе данных или файле. В свою очередь десериализация является противоположным процессом чтения данных с внешнего источника и преобразования его в объект периода выполнения. Вместе они - основная часть большинства приложений, которые обмениваются данными с третьими лицами.

Некоторые форматы сериализации данных, такие как JSON и буферы протокола особенно распространены. Будучи нейтральными в отношении языка и независимым от платформы, они включают обмен данными между системами, записанными на любом современном языке.

В Kotlin инструменты сериализации данных доступны в отдельном компоненте, kotlinx.serialization. Это состоит из двух основных частей: плагин Gradle –org.jetbrains.kotlin.plugin.serialization и библиотеки времени выполнения.

Библиотеки

kotlinx.serialization обеспечивает наборы библиотек для всех поддерживаемых платформ – JVM, JavaScript, Собственного компонента – и для различных форматов сериализации – JSON, CBOR, буферы протокола и другие. Можно найти полный список поддерживаемых форматов сериализации ниже.

Все библиотеки сериализации Kotlin принадлежат org.jetbrains.kotlinx: группе. Их имена запускаются с kotlinx-serialization

kotlinx.serialization библиотеки используют свою собственную структуру управления версиями, которая не соответствует Kotlin.

Форматы

kotlinx.serialization включает библиотеки для различных форматов сериализации:

  • JSON: kotlinx-serialization-core
  • Буферы протокола: kotlinx-serialization-protobuf
  • CBOR: kotlinx-serialization-cbor
  • Свойства: kotlinx-serialization-properties
  • HOCON: kotlinx-serialization-hocon

Обратите внимание что все библиотеки кроме сериализации JSON (kotlinx-serialization-core) находятся в экспериментальном состоянии, что означает, что их API может быть изменен без уведомления.

Пример: сериализация JSON

Давайте смотреть на то, как сериализировать объекты Kotlin в JSON.

Перед запуском необходимо будет настроить сценарий сборки так, чтобы можно было использовать инструменты сериализации Kotlin в проекте:

  1. Примените сериализацию Kotlin плагин Gradle org.jetbrains.kotlin.plugin.serialization (или kotlin(“plugin.serialization”) в Gradle DSL Kotlin).

    plugins {
      id 'org.jetbrains.kotlin.jvm' version '1.4.10'
      id 'org.jetbrains.kotlin.plugin.serialization' version '1.4.10'  }
    
  2. Добавьте зависимость библиотеки сериализации JSON: org.jetbrains.kotlinx:kotlinx-serialization-core:1.0.1

     dependencies {
      implementation 'org.jetbrains.kotlinx:kotlinx-serialization-core:1.0.1'
      } 
    

    Теперь вы готовы использовать API сериализации в своем коде.

Во-первых, сделайте класс сериализуемым путем аннотирования его @Serializable.

@Serializable
data class Data(val a: Int, val str: String = "str")

Можно теперь сериализировать экземпляр этого класса путем вызова Json.encodeToString().

Json.encodeToString(Data(42))

В результате Вы получаете строку, содержащую состояние этого объекта в формате JSON: {"a": 42, "b": "str"}

Можно также сериализировать объектные наборы, такие как списки, в единственном вызове.

val dataList = listOf(Data(42), Data(12, "test"))
val jsonList = Json.encodeToString(dataList)

Для десериализации объекта от JSON используйте decodeFromString() функция:

val obj = Json.decodeFromString<Data>("""{"a":42}""")

serialization's People

Contributors

egoshin21 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.