diff options
Diffstat (limited to 'src/core.js')
-rw-r--r-- | src/core.js | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/core.js b/src/core.js index 5c9906888..efdc4570f 100644 --- a/src/core.js +++ b/src/core.js @@ -472,25 +472,24 @@ jQuery.extend({ }, parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + // Make sure the incoming data is actual JSON // Logic borrowed from http://json.org/json2.js - if (/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") + if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") - .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) { + .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) { // Try to use the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - data = window.JSON.parse( data ); - - } else { - data = (new Function("return " + data))(); - } + return window.JSON && window.JSON.parse ? + window.JSON.parse( data ) : + (new Function("return " + data))(); } else { jQuery.error( "Invalid JSON: " + data ); } - - return data; }, noop: function() {}, |