Хорошо сформированный `JSON.stringify`
JSON.stringify
ранее был определен так, что возвращал некорректные строки Unicode, если входные данные содержали одиночные суррогаты:
JSON.stringify('\uD800');
// → '"�"'
Предложение «хорошо сформированного JSON.stringify
» изменяет JSON.stringify
, чтобы он выводил экранированные последовательности для одиночных суррогатов, делая его вывод валидным Unicode (и представимым в UTF-8):
JSON.stringify('\uD800');
// → '"\\ud800"'
Обратите внимание, что JSON.parse(stringified)
все еще производит те же результаты, что и раньше.
Эта функция — небольшое исправление, которое давно назрело в JavaScript. Это еще одна вещь, о которой не нужно беспокоиться разработчику JavaScript. В сочетании с JSON ⊂ ECMAScript это позволяет безопасно встраивать данные, сериализованные через JSON, как литералы в программы на JavaScript и записывать сгенерированный код на диск в любой совместимый с Unicode формат кодировки (например, UTF-8). Это очень полезно для случаев использования метапрограммирования.