JetBrains оголосила про бібліотеку kotlinx.serialization 1.2
JetBrains представила бібліотеку kotlinx.serialization
1.2! JetBrains внесли ряд удосконалень у нову версію бібліотеки багатоплатформної серіалізації:
- Серіалізація в 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
Підтримка класів вартості
Класи значень (раніше звані вбудованими класами) — це спосіб обгортання інших типів об'єктів Kotlin (наприклад, чисел) безпечним для тексту способом і без додаткового навантаження на запущений код. Таким чином, код можна зробити більш виразним і безпечним без втрати продуктивності.
Вбудована серіалізація в JSON тепер працює і з класами значень. Як і з іншими класами Kotlin, вам просто потрібно додати . классу значений
@Serializable
kotlinx.serialization
Підтримка непідписаних номерів
Непідписані номери - це функціональність, додана в стандартну бібліотеку 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, які будуть використовуватися при розшифровці.
Протобуф: експериментально створення діаграм з класів Котліна
Protocol Buffers (Protobuf) — двійковий формат для серіалізації структурованих даних, розроблений компанією Google. Природно, двійковий формат більш економічний, ніж JSON або XML, при цьому він також забезпечує незалежну від мови структуру, яку можна використовувати для зв'язку між додатками.
Бібліотека kotlinx.serialization
дозволяє використовувати багатоплатформну серіалізацію Protobuf (з семантикою proto2) в експериментальному режимі стабільності . Як і у випадку з іншими форматами, клас може бути анотований як @Serializable
і використовувати вбудовані методиencode
/ методи decode
Використовуючи класи Котліна як джерело істини (поряд з можливими індивідуальними настройками),kotlinx.serialization
він може створити двійкову схему даних, щоб зв'язок між різними додатками Kotlin в форматі protobuf була лаконічною і зручною.
Крім того, kotlinx.serialization
1.2 включає в себе експериментальний генератор схем для Protocol Buffers. Він дозволяє створювати файли класів .proto
даних Kotlin, які потім можуть бути використані для створення виглядів схеми зв'язку на інших мовах, включаючи Python, C++ і TypeScript.
Інструкцію з використання нового схематичного генератора дивіться в документації .
Після того, як ви створите файл .proto
, ви можете зберегти його в репозиторій і використовувати для створення виглядів класів Kotlin іншими мовами.