]> source.dussan.org Git - jquery.git/commitdiff
Core: Deprecate jQuery.parseJSON
authorMichał Gołębiowski <m.goleb@gmail.com>
Wed, 24 Feb 2016 22:47:19 +0000 (23:47 +0100)
committerMichał Gołębiowski <m.goleb@gmail.com>
Wed, 2 Mar 2016 12:12:35 +0000 (13:12 +0100)
Fixes gh-2800
Closes gh-2948

src/ajax.js
src/ajax/parseJSON.js [deleted file]
src/data.js
src/deprecated.js
test/unit/ajax.js
test/unit/basic.js
test/unit/core.js
test/unit/data.js
test/unit/deprecated.js

index 35b29bab40148f1820098c58fc9ed6be9d2de0c5..a7142858094d0482abd249d24a84dcb0f0b77bff 100644 (file)
@@ -7,7 +7,6 @@ define( [
        "./ajax/var/rquery",
 
        "./core/init",
-       "./ajax/parseJSON",
        "./ajax/parseXML",
        "./event/trigger",
        "./deferred",
@@ -348,7 +347,7 @@ jQuery.extend( {
                        "text html": true,
 
                        // Evaluate text as a json expression
-                       "text json": jQuery.parseJSON,
+                       "text json": JSON.parse,
 
                        // Parse text as xml
                        "text xml": jQuery.parseXML
diff --git a/src/ajax/parseJSON.js b/src/ajax/parseJSON.js
deleted file mode 100644 (file)
index c2aeb6a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-define( [
-       "../core"
-], function( jQuery ) {
-
-jQuery.parseJSON = JSON.parse;
-
-return jQuery.parseJSON;
-
-} );
index d2855dde1fe4fac17f2ebd7bea9d1e76cf58bdcf..9c296ef623059dd707ab55d4b9fc676477dcac89 100644 (file)
@@ -35,7 +35,7 @@ function dataAttr( elem, key, data ) {
 
                                        // Only convert to a number if it doesn't change the string
                                        +data + "" === data ? +data :
-                                       rbrace.test( data ) ? jQuery.parseJSON( data ) :
+                                       rbrace.test( data ) ? JSON.parse( data ) :
                                        data;
                        } catch ( e ) {}
 
index 78885266dd381b6f37e264419d30475d37ce3ced..79522e9b1732e14350f01bd9d301abeeaa013f03 100644 (file)
@@ -23,4 +23,6 @@ jQuery.fn.extend( {
        }
 } );
 
+jQuery.parseJSON = JSON.parse;
+
 } );
index 3e00afd4e55da75bc38c17e4254357d4c3fd390b..63f0edd9f2c68e673f110a4ab3f1a2541cc98da0 100644 (file)
@@ -1120,7 +1120,7 @@ QUnit.module( "ajax", {
                        },
                        success: function( text ) {
                                assert.strictEqual( typeof text, "string", "json wasn't auto-determined" );
-                               var json = jQuery.parseJSON( text );
+                               var json = JSON.parse( text );
                                assert.ok( json.length >= 2, "Check length" );
                                assert.strictEqual( json[ 0 ][ "name" ], "John", "Check JSON: first, name" );
                                assert.strictEqual( json[ 0 ][ "age" ], 21, "Check JSON: first, age" );
index 49b518d3f3dfceb5776ddd6f5900587be0624cc9..8a3d19ae63c515d72ea1e04e7591416f3bf96fee 100644 (file)
@@ -76,7 +76,7 @@ QUnit.test( "show/hide", function( assert ) {
 }
 
 QUnit.test( "core", function( assert ) {
-       assert.expect( 28 );
+       assert.expect( 27 );
 
        var elem = jQuery( "<div></div><span></span>" );
 
@@ -135,8 +135,6 @@ QUnit.test( "core", function( assert ) {
 
        assert.strictEqual( jQuery.parseHTML( "<div></div><span></span>" ).length,
                2, "jQuery.parseHTML" );
-
-       assert.deepEqual( jQuery.parseJSON( "{\"a\": 2}" ), { a: 2 }, "jQuery.parseJON" );
 } );
 
 QUnit.test( "data", function( assert ) {
index accba6bd681406103708caa56ca2bc1f3621c7a3..99b2acc452ca6f592fcbd6f8730140316a28e1df 100644 (file)
@@ -1548,93 +1548,6 @@ if ( jQuery.support.createHTMLDocument ) {
        } );
 }
 
-QUnit.test( "jQuery.parseJSON", function( assert ) {
-       assert.expect( 20 );
-
-       assert.strictEqual( jQuery.parseJSON( null ), null, "primitive null" );
-       assert.strictEqual( jQuery.parseJSON( "0.88" ), 0.88, "Number" );
-       assert.strictEqual(
-               jQuery.parseJSON( "\" \\\" \\\\ \\/ \\b \\f \\n \\r \\t \\u007E \\u263a \"" ),
-               " \" \\ / \b \f \n \r \t ~ \u263A ",
-               "String escapes"
-       );
-       assert.deepEqual( jQuery.parseJSON( "{}" ), {}, "Empty object" );
-       assert.deepEqual( jQuery.parseJSON( "{\"test\":1}" ), { "test": 1 }, "Plain object" );
-       assert.deepEqual( jQuery.parseJSON( "[0]" ), [ 0 ], "Simple array" );
-
-       assert.deepEqual(
-               jQuery.parseJSON( "[ \"string\", -4.2, 2.7180e0, 3.14E-1, {}, [], true, false, null ]" ),
-               [ "string", -4.2, 2.718, 0.314, {}, [], true, false, null ],
-               "Array of all data types"
-       );
-       assert.deepEqual(
-               jQuery.parseJSON( "{ \"string\": \"\", \"number\": 4.2e+1, \"object\": {}," +
-                       "\"array\": [[]], \"boolean\": [ true, false ], \"null\": null }" ),
-               { string: "", number: 42, object: {}, array: [ [] ], "boolean": [ true, false ], "null": null },
-               "Dictionary of all data types"
-       );
-
-       assert.deepEqual( jQuery.parseJSON( "\n{\"test\":1}\t" ), { "test": 1 },
-               "Leading and trailing whitespace are ignored" );
-
-       assert.throws( function() {
-               jQuery.parseJSON();
-       }, null, "Undefined raises an error" );
-       assert.throws( function() {
-               jQuery.parseJSON( "" );
-       }, null, "Empty string raises an error" );
-       assert.throws( function() {
-               jQuery.parseJSON( "''" );
-       }, null, "Single-quoted string raises an error" );
-       /*
-
-       // Broken on IE8
-       assert.throws(function() {
-               jQuery.parseJSON("\" \\a \"");
-       }, null, "Invalid string escape raises an error" );
-
-       // Broken on IE8, Safari 5.1 Windows
-       assert.throws(function() {
-               jQuery.parseJSON("\"\t\"");
-       }, null, "Unescaped control character raises an error" );
-
-       // Broken on IE8
-       assert.throws(function() {
-               jQuery.parseJSON(".123");
-       }, null, "Number with no integer component raises an error" );
-
-       */
-       assert.throws( function() {
-               var result = jQuery.parseJSON( "0101" );
-
-               // Support: IE9+
-               // Ensure base-10 interpretation on browsers that erroneously accept leading-zero numbers
-               if ( result === 101 ) {
-                       throw new Error( "close enough" );
-               }
-       }, null, "Leading-zero number raises an error or is parsed as decimal" );
-       assert.throws( function() {
-               jQuery.parseJSON( "{a:1}" );
-       }, null, "Unquoted property raises an error" );
-       assert.throws( function() {
-               jQuery.parseJSON( "{'a':1}" );
-       }, null, "Single-quoted property raises an error" );
-       assert.throws( function() {
-               jQuery.parseJSON( "[,]" );
-       }, null, "Array element elision raises an error" );
-       assert.throws( function() {
-               jQuery.parseJSON( "{},[]" );
-       }, null, "Comma expression raises an error" );
-       assert.throws( function() {
-               jQuery.parseJSON( "[]\n,{}" );
-       }, null, "Newline-containing comma expression raises an error" );
-       assert.throws( function() {
-               jQuery.parseJSON( "\"\"\n\"\"" );
-       }, null, "Automatic semicolon insertion raises an error" );
-
-       assert.strictEqual( jQuery.parseJSON( [ 0 ] ), 0, "Input cast to string" );
-} );
-
 QUnit.test( "jQuery.parseXML", function( assert ) {
        assert.expect( 8 );
 
index 31c6a6174d4e0cdf018d66d297300b2cb3e6dbbc..19f32504bff51d00eba38abd66ec6c3f83a5e662 100644 (file)
@@ -277,7 +277,7 @@ QUnit.test( "data-* attributes", function( assert ) {
 
        var prop, i, l, metadata, elem,
                obj, obj2, check, num, num2,
-               parseJSON = jQuery.parseJSON,
+               parseJSON = JSON.parse,
                div = jQuery( "<div>" ),
                child = jQuery( "<div data-myobj='old data' data-ignored=\"DOM\" data-other='test' data-foo-42='boosh'></div>" ),
                dummy = jQuery( "<div data-myobj='old data' data-ignored=\"DOM\" data-other='test' data-foo-42='boosh'></div>" );
@@ -336,7 +336,7 @@ QUnit.test( "data-* attributes", function( assert ) {
 
        // attribute parsing
        i = 0;
-       jQuery.parseJSON = function() {
+       JSON.parse = function() {
                i++;
                return parseJSON.apply( this, arguments );
        };
@@ -389,7 +389,7 @@ QUnit.test( "data-* attributes", function( assert ) {
        assert.strictEqual( child.data( "string" ), "test", "Typical string read from attribute" );
        assert.equal( i, 2, "Correct number of JSON parse attempts when reading from attributes" );
 
-       jQuery.parseJSON = parseJSON;
+       JSON.parse = parseJSON;
        child.remove();
 
        // tests from metadata plugin
index 797290f3bfb73f41fa1fc1ab9eafe40bdffcd9bc..baf4562b185533eea21d5ee6c1b7ebf8387a9ae7 100644 (file)
@@ -39,4 +39,74 @@ QUnit.test( "delegate/undelegate", function( assert ) {
                        .end()
                .undelegate( "b", "click" )
                .remove();
-} );
\ No newline at end of file
+} );
+
+QUnit.test( "jQuery.parseJSON", function( assert ) {
+       assert.expect( 20 );
+
+       assert.strictEqual( jQuery.parseJSON( null ), null, "primitive null" );
+       assert.strictEqual( jQuery.parseJSON( "0.88" ), 0.88, "Number" );
+       assert.strictEqual(
+               jQuery.parseJSON( "\" \\\" \\\\ \\/ \\b \\f \\n \\r \\t \\u007E \\u263a \"" ),
+               " \" \\ / \b \f \n \r \t ~ \u263A ",
+               "String escapes"
+       );
+       assert.deepEqual( jQuery.parseJSON( "{}" ), {}, "Empty object" );
+       assert.deepEqual( jQuery.parseJSON( "{\"test\":1}" ), { "test": 1 }, "Plain object" );
+       assert.deepEqual( jQuery.parseJSON( "[0]" ), [ 0 ], "Simple array" );
+
+       assert.deepEqual(
+               jQuery.parseJSON( "[ \"string\", -4.2, 2.7180e0, 3.14E-1, {}, [], true, false, null ]" ),
+               [ "string", -4.2, 2.718, 0.314, {}, [], true, false, null ],
+               "Array of all data types"
+       );
+       assert.deepEqual(
+               jQuery.parseJSON( "{ \"string\": \"\", \"number\": 4.2e+1, \"object\": {}," +
+                       "\"array\": [[]], \"boolean\": [ true, false ], \"null\": null }" ),
+               { string: "", number: 42, object: {}, array: [ [] ], "boolean": [ true, false ], "null": null },
+               "Dictionary of all data types"
+       );
+
+       assert.deepEqual( jQuery.parseJSON( "\n{\"test\":1}\t" ), { "test": 1 },
+               "Leading and trailing whitespace are ignored" );
+
+       assert.throws( function() {
+               jQuery.parseJSON();
+       }, null, "Undefined raises an error" );
+       assert.throws( function() {
+               jQuery.parseJSON( "" );
+       }, null, "Empty string raises an error" );
+       assert.throws( function() {
+               jQuery.parseJSON( "''" );
+       }, null, "Single-quoted string raises an error" );
+
+       assert.throws( function() {
+               var result = jQuery.parseJSON( "0101" );
+
+               // Support: IE9+
+               // Ensure base-10 interpretation on browsers that erroneously accept leading-zero numbers
+               if ( result === 101 ) {
+                       throw new Error( "close enough" );
+               }
+       }, null, "Leading-zero number raises an error or is parsed as decimal" );
+       assert.throws( function() {
+               jQuery.parseJSON( "{a:1}" );
+       }, null, "Unquoted property raises an error" );
+       assert.throws( function() {
+               jQuery.parseJSON( "{'a':1}" );
+       }, null, "Single-quoted property raises an error" );
+       assert.throws( function() {
+               jQuery.parseJSON( "[,]" );
+       }, null, "Array element elision raises an error" );
+       assert.throws( function() {
+               jQuery.parseJSON( "{},[]" );
+       }, null, "Comma expression raises an error" );
+       assert.throws( function() {
+               jQuery.parseJSON( "[]\n,{}" );
+       }, null, "Newline-containing comma expression raises an error" );
+       assert.throws( function() {
+               jQuery.parseJSON( "\"\"\n\"\"" );
+       }, null, "Automatic semicolon insertion raises an error" );
+
+       assert.strictEqual( jQuery.parseJSON( [ 0 ] ), 0, "Input cast to string" );
+} );