+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новости

JetBrains анонсировала библиотеку kotlinx.serialization 1.2

JetBrains анонсировала библиотеку kotlinx.serialization 1.2

JetBrains представила библиотеку kotlinx.serialization 1.2! JetBrains внесли ряд улучшений в новую версию мультиплатформенной библиотеки сериализации:

  • Cериализация в JSON теперь работает гораздо быстрее. В версии 1.2 парсинг JSON в типобезопасные объекты Kotlin и преобразование объектов Kotlin в их текстовые представления может осуществляться вдвое быстрее.
  • Появилась поддержка новых элементов системы типов Kotlin 1.5. Классы значений и числа без знака можно преобразовать в JSON и обратно точно так же, как любой другой класс Kotlin.
  • Новая документация API упрощает изучение возможностей kotlinx.serialization.

Кроме того, в версии 1.2 добавлена поддержка альтернативных имен полей JSON и реализован новый экспериментальный подход с автоматическим созданием схем Protobuf из классов Kotlin. 

Ускоренное кодирование и декодирование JSON

Преобразование классов Kotlin в строки JSON и обратно — одни из самых популярных функций kotlinx.serialization

В версии 1.2 внутренняя структура библиотеки kotlinx.serialization была полностью переработана, и в результате производительность двух этих важнейших функций значительно выросла.

Сразу после перехода на новую версию библиотеки скорость выполнения стандартных задач кодирования и декодирования может вырасти вдвое.

Стабильная (де)сериализация в JSON для классов значений и типов чисел без знака

В Kotlin 1.5.0 появились два полезных дополнения: классы значений и типы чисел без знака. Версия kotlinx.serialization 1.2 обеспечивает для них полную поддержку кодирования и декодирования JSON

Поддержка классов значений

Классы значений (раньше они назывались inline-классы) — это способ обертывания объектов Kotlin другого типа (например, чисел) типобезопасным образом и без дополнительной нагрузки при выполнении кода. Таким образом код можно сделать более выразительным и безопасным, не теряя в производительности.

Встроенная в kotlinx.serialization сериализация в JSON теперь работает и с классами значений. Как и для других классов Kotlin classes, достаточно просто добавить к классу значений аннотацию @Serializable.

Поддержка чисел без знака

Числа без знака — это функциональность, добавленная в стандартную библиотеку Kotlin. Они обеспечивают типы и операции с неотрицательными числами. После выхода Kotlin 1.5.0 пользователям доступны следующие типы чисел без знака:

  • UByte со значениями от 0 до 255;
  • UShort со значениями от 0 до 65535;
  • UInt, со значениями от 0 до 2^32 – 1;
  • ULong, со значениями от 0 до 2^64 – 1.

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

Поддержка альтернативных имен полей JSON

Иногда приходится анализировать поля JSON, имеющие разные имена, но одинаковые значения, например, для обеспечения обратной совместимости. Новая аннотация @JsonNames позволяет присваивать полям JSON альтернативные имена, которые будут использоваться при декодировании.

Protobuf: экспериментальное создание схем из классов Kotlin

Protocol Buffers (Protobuf) — двоичный формат сериализации структурированных данных, разработанный Google. Естественно, бинарный формат экономичнее, чем JSON или XML, при этом он так же обеспечивает независимую от языка структуру, которую можно использовать для коммуникации между приложениями.

Библиотека kotlinx.serialization позволяет использовать мультиплатформенную сериализацию Protobuf (с семантикой proto2) в режиме экспериментальной стабильности. Как и при работе с другими форматами, класс можно аннотировать как @Serializable и использовать встроенные методы encode / decode methods

Используя классы Kotlin как источник истины (вместе с возможными индивидуальными настройками), kotlinx.serialization может создавать двоичную схему данных, чтобы коммуникация между различными приложениями Kotlin в формате Protobuf была лаконичной и удобной.

Кроме того, kotlinx.serialization 1.2 включает в себя экспериментальный генератор схем для Protocol Buffers. Он позволяет создавать из классов данных Kotlin файлы .proto, которые затем можно использовать для создания представлений схемы коммуникации в других языках, в том числе Python, C++ и TypeScript.

Инструкции по работе с новым генератором схемы приведены в документации.

После создания файла .proto его можно сохранить в репозитории и использовать для создания представлений классов Kotlin в других языках.

Другие новости