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
.