Skip to main content
On this page

Базовый пример

Базовый пример сериализации данных

Создадим сериализатор, который будет преобразовывать объекты в бинарные данные и обратно. Для примера возьмем гипотетический объект пользователя:

import { Serializer, ExtractObj, t } from "encodexx";
const userSerializer = new Serializer({
name: t.str,
id: t.uint32,
role: t.enumerate("admin", "user", "guest"),
info: t.optional({
age: t.uint8,
createdAt: t.date,
}),
friends: [
t.or(
t.schema({ type: t.enumerate("admin"), name: t.str, link: t.str }, "type"),
t.schema({ type: t.enumerate("user"), id: t.uint32 }, "type")
),
],
});

Tip

Вы можете не передавать второй аргумент в t.schema(), тогда encodexx самостоятельно определит сравнит объекты. Подробнее

Сериализуем объект пользователя:

// Получаем тип объекта, который сериализует схема
type TUser = ExtractObj<typeof userSerializer>;
const user: TUser = {
name: "John",
role: "admin",
id: 2,
friends: [
{ type: "admin", name: "Alice", link: "https://example.com" },
{ type: "user", id: 1 },
],
};
const encoded = userSerializer.encode(user);
console.log(encoded.buffer);

Декодируем бинарные данные:

const decoded = userSerializer.decode(encoded);
console.log(decoded);