JQuery.parseJSON против JSON.parse

jQuery.parseJSON и JSON.parse - две функции, выполняющие одну и ту же задачу. Если библиотека jQuery уже загружена, использование jQuery.parseJSON лучше, чем использование JSON.parse, с точки зрения производительности?

Если да, то почему? Если нет, почему бы и нет?

Ответ 1

Вот фрагмент из 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 );
},

Как вы можете видеть, jQuery будет использовать собственный метод JSON.parse, если он доступен, и в противном случае он попытается оценить данные с помощью new Function, что похоже на eval.

Итак, вы должны обязательно использовать jQuery.parseJSON.

Ответ 2

Согласно jQuery

Если браузер предоставляет встроенную реализацию JSON.parse, jQuery использует его для синтаксического анализа строки.

Таким образом, это означает, что jQuery предоставляет парсер JSON, если в браузере не существует встроенной реализации. здесь сравнительная таблица браузеров, которые имеют (и не имеют) функциональность JSON

Ответ 3

JSON.parse() доступен на некоторых браузерах, а не на других, поэтому безопаснее использовать библиотеку. Реализация JQuery работает хорошо, как отметили другие респонденты. Там также библиотека Douglas Crockford JSON, которая использует встроенную реализацию, если таковая имеется.

Библиотека JSON имеет то преимущество, что у нее есть способ превратить объект JavaScript в строку JSON, которая отсутствует в jQuery в данный момент.

Ответ 4

Если вы используете версию 3 jQuery (выпущенную в 2016 году), вам следует использовать JSON.parse() поскольку jQuery.parseJSON() устарела.

Начиная с jQuery 3.0, $.parseJSON устарел. Чтобы проанализировать объекты JSON, используйте вместо этого собственный метод JSON.parse.

Ответ 5

Я не знаю о производительности, но определенно безопаснее использовать метод jQuery, потому что некоторые браузеры, такие как ie7 и lower, могут не иметь каких-либо функций JSON изначально.
Все о совместимости, точно так же, как вы используете jQuery каждый метод вместо массива native forEach для итерации.

Ответ 6

Говоря о производительности, наиболее обновленный ответ JSON.parse.

Собственный объект JSON поддерживается в каждом браузере в настоящее время, поэтому выберите JSON.parse. Таблицу поддержки можно найти здесь: http://caniuse.com/#feat=json

Вы также можете найти эти псевдонимы в репозитории JQuery на GitHub: https://github.com/jquery/jquery/search?utf8=%E2%9C%93&q=parseJSON

Кроме того, jQuery.parseJson был устаревшим на версии 3.0+, как упоминалось в других ответах здесь.

Вы должны использовать только версию jQuery, если вы старая версия JQuery +, если хотите обеспечить поддержку очень старых браузеров (обычно не рекомендуется).

Ответ 7

jQuery внутренне использует JSON.parse для анализа файла JSON. В большинстве случаев это не имеет никакого значения.

Но некоторые из старых браузеров не поддерживают функциональность JSON.parse. В этом случае использование jQuery.parseJSON полезно, поскольку jQuery может обрабатывать JSON, используя свою собственную функцию.

Примечание:

jQuery.parseJSON устарел из jQuery 3.0. Поэтому используйте собственный метод JSON.parse.