JSON

Серіалізація та десеріалізація в JavaScript

Серіалізація (об’єкт у рядок)

Серіалізація - це процес перетворення структури даних, наприклад об'єкта чи масиву JavaScript, у формат, який можна легко зберігати.

У JavaScript найпоширеніший формат серіалізації JSON (JavaScript Object Notation). Формат JSON легко читати і писати людиною і машиною.

Приклад серіалізації в JavaScript за допомогою JSON:

const data = { name: "John", age: 30 };

const jsonString = JSON.stringify(data);
// Output: '{"name":"John","age":30}'
console.log(JSON.stringify({ x: 5, y: 6 }));
// Expected output: '{"x":5,"y":6}'

console.log(
  JSON.stringify([new Number(3), new String('false'), new Boolean(false)]),
);
// Expected output: '[3,"false",false]'

console.log(JSON.stringify({ x: [10, undefined, function () {}, Symbol('')] }));
// Expected output: '{"x":[10,null,null,null]}'

console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
// Expected output: '"2006-01-02T15:04:05.000Z"'

Дезеріалізація (рядок у об’єкт)

Дезеріалізація - це протилежний процес серіалізації. Він перетворює дані у своєму серіалізованому форматі у свою первісну структуру даних, наприклад, об'єкт або масив JavaScript, щоб зробити дані зручними та доступними у програмі.

Приклад десеріалізації в JavaScript за допомогою JSON:

const jsonString = '{"name":"John", "age":30}';

const data = JSON.parse(jsonString);
// Output: { name: "John", age: 30 }
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);

console.log(obj.count);
// Expected output: 42

console.log(obj.result);
// Expected output: true

Інші формати

Не тільки JSON, є численні формати серіалізації, як зазначено нижче:

BSON

BSON - це формат обміну двійковими кодами даних, розроблений таким чином, щоб він був більш ефективним щодо зберігання та передачі порівняно з JSON. Він розширює JSON додатковими типами даних і зазвичай використовується в контексті MongoDB.

Приклад серіалізації та десеріалізації BSON з використанням бсон пакет:

import { BSON, ObjectId } from 'bson';

const data = { _id: new ObjectId(), name: "John", age: 30 }

// serialization

const bytes = BSON.serialize(data);
// Output: <Buffer 2e 00 00 00 07 5f 69 64 00 64 ca 53 01 9d 14 77 b6 a1 a2 89 e4 02 6e 61 6d 65 00 05 00 00 00 4a 6f 68 6e 00 10 61 67 65 00 1e 00 00 00 00>

// deserialization

const doc = BSON.deserialize(bytes);
// Output: {
//  _id: new ObjectId("64ca53019d1477b6a1a289e4"),
//  name: 'John',
//  age: 30
// }

EJSON

Розширений JSON (EJSON) - це супер набір JSON, а це означає, що він включає всі функції стандартного JSON і розширює додаткові конвенції для представлення певного типу даних та конкретних конструкцій MongoDB.

Приклад серіалізації та десеріалізації EJSON з використанням BSON пакет:

import { EJSON } from 'bson';

const data = { "_id": { "$oid": "613e8693499f15328a17e8b1" }, "name": "John", "age": 30 }

// serialization

const jsonString = EJSON.stringify(data, { relaxed: false });
// Output: '{"_id":{"$oid":"613e8693499f15328a17e8b1"},"name":"John","age":{"$numberInt":"30"}}'

// deserialization

const data = EJSON.stringify(data, { relaxed: false });
// Output: {
//  _id: new ObjectId("613e8693499f15328a17e8b1"),
//  name: 'John',
//  age: new Int32(30)
// }

Висновок

Підсумовуючи, Серіалізація це процес перетворення даних у компактний та структурований формат, придатний для зберігання та передачі, в той час як Дезеріалізація це процес перетворення серіалізованих даних у початковий формат.

Last updated