Представлення типу в JSON

JSON – це зручний і широко вживаний формат для серіалізації об'єктів, масивів, чисел, рядків, булевих значень і null. JSON підтримує не всі типи даних, дозволені JavaScript, тобто об'єкти JavaScript, які використовують ці несумісні типи, не можуть бути безпосередньо серіалізовані в JSON.

Представлення типу в JSON – це сумісний з JSON об'єкт, який є рівносильним об'єктом JavaScript, властивості якого закодовані так, що інформацію можна серіалізувати в JSON. Зазвичай такий об'єкт має такі ж властивості, що й вихідний об'єкт, у випадку сумісних типів даних, а несумісні властивості перетворюються чи серіалізуються в сумісні типи. Наприклад, властивості вихідного об'єкта, що містять буфери, у представленні типу в JSON можуть бути закодовані в рядки згідно з алгоритмом base64url.

Об'єкт, який не може бути автоматично серіалізований у JSON за допомогою методу JSON.stringify(), може мати метод примірника під назвою toJSON(), який повертає представлення типу в JSON вихідного об'єкта. Тоді JSON.stringify() використовує toJSON() для отримання об'єкта, який буде рядковано замість вихідного об'єкта. PublicKeyCredential.toJSON() і Performance.toJSON() є прикладами такого підходу.

Рядок JSON, серіалізований у такий спосіб, може бути десеріалізований назад в об'єкт представлення типу в JSON за допомогою JSON.parse(). Заведено надавати метод-перетворювач, такий як PublicKeyCredential.parseCreationOptionsFromJSON(), для перетворення представлення типу в JSON назад у вихідний об'єкт.