Вот как вы тоже можете это сделать. Подсказки по Node.js за 5 минут или меньше, часть 4

Я никогда серьезно не относился к сериализации в JavaScript, раньше это была лишь одна из тех вещей, которые я использую для мышечной памяти. Прочитав недавно, я понял, что с помощью этого простого метода JavaScript JSON.stringify() можно сделать гораздо больше.

Что такое сериализация?

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

Как и когда мы используем сериализацию?

Обычно мы используем сериализацию в нескольких случаях. Такие как:

  • Перед отправкой данных в API в формате JSON их необходимо сначала сериализовать. В некоторых фреймворках это делается за кулисами.
  • Перед записью в файл. Обычно для операции записи файла требуется строка для вставки данных в указанный файл. Поэтому, если мы хотим записать объект JSON или данные в файл, нам необходимо сначала преобразовать его в строку.
  • При хранении данных в локальном хранилище. Локальное хранилище хранит только в строковом формате, но для того, чтобы иметь возможность хранить другие формы данных, вы должны сначала сериализовать их, а затем вы можете легко их сохранить.

Как мы сериализуем объекты?

В JavaScript мы можем легко сериализовать объекты, используя метод JSON.stringify(). Этот метод принимает любой объект и возвращает строку, необязательно включая только указанные свойства, если указан массив заменителя. Пример:

let user = {
 name: "John",
 age: "12",
 gender: "male",
}
JSON.stringify(user)
// Output
// '{ "name": "John", "age": "12, "gender": "male" }'

JSON.stringify можно использовать для сериализации не только объектов, но и массивов. Хотя под капотом массив также является объектом.

Как сериализация работает для различных типов данных

- Пустые объекты преобразуются в фигурные скобки в строке

JSON.stringify({})
// output
// '{}'

- Любое логическое значение преобразуется в соответствующее строковое значение.

JSON.stringify(true)
// output
// 'true'

- Строка преобразуется в строку в строковом формате

JSON.stringify('foo')
// '"foo"'

- Массив преобразуется в соответствующую строку

JSON.stringify(["John", 12, false]);
// '["John", 12, false]'

- NaN, undefined, бесконечность преобразуется в ноль

JSON.stringify([NaN, undefined, Infinity]);
// '[null,null,null]'

- Объекты конвертируются в строковую версию самого объекта

JSON.stringify({name:"John",age:12})
// '{"name":"John", "age":12}'

- Элементы массива со строковыми ключами не перечисляются, они игнорируются

let a = ["Car","Cup"]
a["age"] = 12 // [0: "Car", 1: "Cup", "age": 12]
JSON.stringify(a)
// '["Car","Cup"]

Вы также можете найти другие типы в MDN Web Docs.

В качестве бонуса вы также можете использовать метод toJSON () для форматирования или установки возвращаемого значения при сериализации объекта.

let y = {
 a: 5,
 b: 5,
 toJSON(){
  return this.a + this.b;
 }
}
JSON.stringify(y);
// '10'

Спасибо за чтение. Вы также можете выделить несколько секунд, чтобы оставить аплодисменты, или пятьдесят 😅😅