Skip to content

Instantly share code, notes, and snippets.

@xulapp
Created June 9, 2011 13:05
Show Gist options
  • Select an option

  • Save xulapp/1016691 to your computer and use it in GitHub Desktop.

Select an option

Save xulapp/1016691 to your computer and use it in GitHub Desktop.
json check and eval
function json(str) {
var _str = str;
var innermostObjectReg = /(^|[[:,])\s*(?:\[(?:\s*(?:"(?:\\["\\/bfnrt]|\\u[0-9A-Fa-f]{4}|[^\\"])*"|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[Ee][+-]?\d+)?|true|false|null)\s*(?:,\s*(?:"(?:\\["\\/bfnrt]|\\u[0-9A-Fa-f]{4}|[^\\"])*"|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[Ee][+-]?\d+)?|true|false|null)\s*)*|\s*)\]|\{(?:\s*"(?:\\["\\/bfnrt]|\\u[0-9A-Fa-f]{4}|[^\\"])*"\s*:\s*(?:"(?:\\["\\/bfnrt]|\\u[0-9A-Fa-f]{4}|[^\\"])*"|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[Ee][+-]?\d+)?|true|false|null)\s*(?:,\s*"(?:\\["\\/bfnrt]|\\u[0-9A-Fa-f]{4}|[^\\"])*"\s*:\s*(?:"(?:\\["\\/bfnrt]|\\u[0-9A-Fa-f]{4}|[^\\"])*"|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[Ee][+-]?\d+)?|true|false|null)\s*)*|\s*)\})\s*(?=[\]},]|$)/g;
while (_str !== (_str = _str.replace(innermostObjectReg, '$10')));
if (/^\s*(?:"(?:\\["\\/bfnrt]|\\u[0-9A-Fa-f]{4}|[^\\"])*"|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[Ee][+-]?\d+)?|true|false|null)\s*$/.test(_str)) {
_str = str.replace(/\u2028|\u2029/g, function(c) {
return c === '\u2028' ? '\\u2028' : '\\u2029';
});
return eval('(' + _str + ')');
}
return null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment