Skip to content

Instantly share code, notes, and snippets.

@davidfurlong
Last active January 4, 2024 09:15
Show Gist options
  • Star 19 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save davidfurlong/463a83a33b70a3b6618e97ec9679e490 to your computer and use it in GitHub Desktop.
Save davidfurlong/463a83a33b70a3b6618e97ec9679e490 to your computer and use it in GitHub Desktop.
JSON.stringify replacer function for having object keys sorted in output (supports deeply nested objects)
// Spec http://www.ecma-international.org/ecma-262/6.0/#sec-json.stringify
const replacer = (key, value) =>
value instanceof Object && !(value instanceof Array) ?
Object.keys(value)
.sort()
.reduce((sorted, key) => {
sorted[key] = value[key];
return sorted
}, {}) :
value;
// Usage
// JSON.stringify({c: 1, a: { d: 0, c: 1, e: {a: 0, 1: 4}}}, replacer);
@peternann
Copy link

This is quite clever. Touche.

@congzhou09
Copy link

Ingenious!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment