81

jQuery.parseJSONJSON.parseは、同じタスクを実行する 2 つの関数です。jQuery ライブラリが既に読み込まれている場合、パフォーマンスの点で を使用jQuery.parseJSONするよりも使用する方が良いでしょうJSON.parseか?

はいの場合、なぜですか? いいえの場合、なぜですか?

4

7 に答える 7

113

Here is an extract from jQuery 1.9.1:

parseJSON: function( data ) {
    // Attempt to parse using the native JSON parser first
    if ( window.JSON && window.JSON.parse ) {
        return window.JSON.parse( data );
    }

    if ( data === null ) {
        return data;
    }

    if ( typeof data === "string" ) {

        // Make sure leading/trailing whitespace is removed (IE can't handle it)
        data = jQuery.trim( data );

        if ( data ) {
            // Make sure the incoming data is actual JSON
            // Logic borrowed from http://json.org/json2.js
            if ( rvalidchars.test( data.replace( rvalidescape, "@" )
                .replace( rvalidtokens, "]" )
                .replace( rvalidbraces, "")) ) {

                return ( new Function( "return " + data ) )();
            }
        }
    }

    jQuery.error( "Invalid JSON: " + data );
},

As you can see, jQuery will use the native JSON.parse method if it is available, and otherwise it will try to evaluate the data with new Function, which is kind of like eval.

So yes, you should definitely use jQuery.parseJSON.

于 2012-04-28T09:35:48.647 に答える
10

jQueryによると

ブラウザーが JSON.parse のネイティブ実装を提供する場合、jQuery はそれを使用して文字列を解析します。

したがって、ブラウザーにネイティブ実装が存在しない場合、jQuery は JSON パーサーを提供することを意味します。これは、JSON 機能を備えた (および備えていない) ブラウザーの比較表です。

于 2012-04-28T09:33:25.287 に答える
7

jQuery バージョン 3 (2016 年にリリース) を使用している場合は、JSON.parse()because jQuery.parseJSON() has been deprecatedを使用する必要があります。

jQuery 3.0 以降、$.parseJSON は非推奨になりました。JSON オブジェクトを解析するには、代わりにネイティブの JSON.parse メソッドを使用します。

于 2016-07-14T22:06:21.167 に答える
6

JSON.parse()は、一部のブラウザーではネイティブに使用可能であり、他のブラウザーでは使用できないため、ライブラリーを使用する方が安全です。他の回答者が指摘しているように、JQueryの実装はうまく機能します。Douglas CrockfordのJSONライブラリもあります。これは、可能な場合はネイティブ実装を使用します。

JSONライブラリには、JavaScriptオブジェクトをJSON文字列に変換するメソッドがあるという利点がありますが、現時点ではjQueryにはありません。

于 2012-10-26T18:50:04.713 に答える
3

パフォーマンスについてはわかりませんが、ie7 以下のような一部のブラウザーには JSON 機能がネイティブにない可能性があるため、jQuery メソッドを使用する方が確実に安全です。反復のため
に配列のネイティブ メソッドの代わりに jQuery の each メソッドを使用するのと同じように、互換性がすべてです。forEach

于 2012-04-28T09:33:54.983 に答える
1

jQuery は内部的JSON.parseに JSON ファイルを解析するために使用します。そのため、ほとんどの場合、違いはありません。

JSON.parseただし、一部の古いブラウザーは機能をサポートしていません。その場合jQuery.parseJSON、jQuery は独自の関数を使用して JSON を処理できるため、使用すると便利です。

ノート:

jQuery.parseJSONはjQuery 3.0から廃止されましたので、ネイティブJSON.parseメソッドをご利用ください。

于 2017-01-10T08:58:13.953 に答える