aboutsummaryrefslogtreecommitdiffstats
path: root/src/core.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/core.js')
-rw-r--r--src/core.js19
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() {},