Skip to content

Instantly share code, notes, and snippets.

@benbahrenburg
Forked from matthewmueller/escape-json.js
Created December 25, 2020 03:39
Show Gist options
  • Save benbahrenburg/5238724bacf2667c8dbef0cbaa095938 to your computer and use it in GitHub Desktop.
Save benbahrenburg/5238724bacf2667c8dbef0cbaa095938 to your computer and use it in GitHub Desktop.
Escape JSON strings before trying to run JSON.parse
/*
Escape JSON
*/
var escapeJSON = exports.escapeJSON = function(json) {
var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
var meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
};
escapable.lastIndex = 0;
return escapable.test(json) ? '"' + json.replace(escapable, function (a) {
var c = meta[a];
return (typeof c === 'string') ? c
: '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' : '"' + json + '"';
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment