← Back to release summary

Well-formed JSON.stringify

Category
JavaScript
Type
New or changed feature
Status
Enabled by default (Chrome 72)
Intent stage
None

Summary

A Stage 3 ECMAScript proposal changes JSON.stringify to prevent it from returning ill-formed Unicode strings. Previously, JSON.stringify would output lone surrogates if the input contained any lone surrogates: ``` JSON.stringify("\uD800"); // --> '"�"' ``` With this change, JSON.stringify outputs escape sequences for lone surrogates, making its output valid Unicode (and representable in UTF-8): ``` JSON.stringify("\uD800"); // --> '"\ud800"' ```

Standards & signals

Docs: https://v8.dev/features/well-formed-json-stringify https://github.com/tc39/proposal-well-formed-stringify

View on chromestatus.com