Skip to content

Commit

Permalink
update(JS): web/javascript/reference/global_objects/json/stringify (#506
Browse files Browse the repository at this point in the history
)

* update(JS): web/javascript/reference/global_objects/json/stringify/index.md

* update(JS): web/javascript/reference/global_objects/json/stringify

* update(JS): web/javascript/reference/global_objects/json/stringify
  • Loading branch information
undead404 authored Jul 27, 2022
1 parent 075bc06 commit d83810f
Showing 1 changed file with 5 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,11 @@ JSON.stringify(value, replacer, space);
- Якщо значення має метод [`toJSON()`](#povedinka-tojson), то він відповідатиме за те, які саме дані буде серіалізовано.
- Об'єкти {{JSxRef("Boolean")}}, {{JSxRef("Number")}} та {{JSxRef("String")}} під час серіалізації зводяться до власних примітивних значень, згідно з традиційною семантикою таких перетворень.
- {{JSxRef("undefined")}}, {{JSxRef("Function", "функції")}} та {{JSxRef("Symbol", "символи")}} не є валідними значеннями JSON. Якщо якесь із цих значень трапляється під час перетворення, то воно або опускається (в об'єктах), або ж замінюється на {{JSxRef("null")}} (якщо трапляється в масиві). `JSON.stringify()` може повернути `undefined`, якщо передати в нього їхні "чисті" значення, як от `JSON.stringify(function() {})` або `JSON.stringify(undefined)`.
- Всі властивості об'єкту, які мають за ключі {{JSxRef("Symbol", "символи")}}, будуть повністю проігноровані, навіть у разі передачі функції `replacer`.
- Всі властивості об'єкта, які мають за ключі {{JSxRef("Symbol", "символи")}}, будуть повністю проігноровані, навіть у разі передачі функції `replacer`.
- Екземпляри {{JSxRef("Date")}} реалізовують функцію `toJSON()` шляхом повертання рядка (так само як це робить `date.toISOString()`). Таким чином, вони будуть сприйматися як рядки.
- Числа {{JSxRef("Infinity")}} і {{JSxRef("NaN")}}, так само як і значення {{JSxRef("null")}}, — вважаються `null`.
- Всі інші екземпляри {{JSxRef("Object", "об'єктів")}} (включно з {{JSxRef("Map")}}, {{JSxRef("Set")}}, {{JSxRef("WeakMap")}} та {{JSxRef("WeakSet")}}) серіалізуватимуть лише свої перелічувані властивості.
- Перелічувані властивості обробляються з використанням такого самого алгоритму, як у [`Object.keys`](/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/keys), що має як слід описаний порядок та є стабільним у всіх реалізаціях. Наприклад, `JSON.stringify` завжди поверне однаковий рядок для одного обєкта, а `JSON.parse(JSON.stringify(obj))` поверне обєкт з таким само порядком ключів, як у вихідного обєкта (виходячи із того, що цей обєкт є цілком JSON-серіалізовним).
- Перелічувані властивості обробляються з використанням такого самого алгоритму, як у [`Object.keys`](/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/keys), що має як слід описаний порядок та є стабільним у всіх реалізаціях. Наприклад, `JSON.stringify` завжди поверне однаковий рядок для одного об'єкта, а `JSON.parse(JSON.stringify(obj))` поверне об'єкт з таким само порядком ключів, як у вихідного об'єкта (виходячи із того, що цей об'єкт є цілком JSON-серіалізовним).

## Приклади

Expand Down Expand Up @@ -229,7 +229,7 @@ JSON.stringify({ uno: 1, dos: 2 }, null, '\t');

### Поведінка toJSON()

Якщо об'єкт, який серіалізується, містить властивість із назвою `toJSON`, і значення цієї властивості є функцією, то метод `toJSON()` змінює поведінку серіалізації, а саме: замість серіалізації самого об'єкту буде перетворений результат виклику методу `toJSON()`. Функція `JSON.stringify()` викликає метод `toJSON` з одним параметром, куди передається одне з цих значень:
Якщо об'єкт, який серіалізується, містить властивість із назвою `toJSON`, і значення цієї властивості є функцією, то метод `toJSON()` змінює поведінку серіалізації, а саме: замість серіалізації самого об'єкта буде перетворений результат виклику методу `toJSON()`. Функція `JSON.stringify()` викликає метод `toJSON` з одним параметром, куди передається одне з цих значень:

- Назва властивості, якщо цей об'єкт є значенням властивості.
- Індекс масиву (як рядок), якщо цей об'єкт є масивом
Expand Down Expand Up @@ -318,7 +318,7 @@ console.log(a !== b); // true
На випадок, якщо потрібно зберегти створений користувачем об'єкт, з можливістю відновити його навіть після закриття браузера, нижче наведено патерн застосування `JSON.stringify()`:

```js
// Створення прикладу JSON-об'єкту
// Створення прикладу JSON-об'єкта
const session = {
screens: [],
state: true,
Expand All @@ -330,7 +330,7 @@ session.screens.push({ name: 'screenD', width: 250, height: 60 });
session.screens.push({ name: 'screenE', width: 390, height: 120 });
session.screens.push({ name: 'screenF', width: 1240, height: 650 });

// Перетворення об'єкту на JSON-рядок із JSON.stringify(),
// Перетворення об'єкта на JSON-рядок із JSON.stringify(),
// потім збереження його в localStorage за ім'ям `session`
localStorage.setItem('session', JSON.stringify(session));

Expand Down

0 comments on commit d83810f

Please sign in to comment.