jQuery.parseJSON
и JSON.parse
две функции, которые выполняют одну и ту же задачу. Если библиотека jQuery уже загружена, будет ли использование jQuery.parseJSON
лучше, чем использование JSON.parse
, с точки зрения производительности?
Если да, то почему? Если нет, то почему?
javascript
jquery
Вопрос переполнен
источник
источник
Ответы:
Вот выдержка из 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
.источник
JSON.parse
: caniuse.com/#search=jsonСогласно jQuery
таким образом, это означает, что jQuery предоставляет парсер JSON, если в браузере нет собственной реализации. вот сравнительная таблица браузеров, у которых есть (и нет) функциональность JSON
источник
JSON.parse () изначально доступен в некоторых браузерах, но не в других, поэтому безопаснее использовать библиотеку. Как отметили другие респонденты, реализация JQuery работает хорошо. Также существует библиотека JSON Дугласа Крокфорда , которая использует встроенную реализацию, если она доступна.
У библиотеки JSON есть преимущество, заключающееся в том, что в ней есть метод преобразования объекта JavaScript в строку JSON, которая в данный момент отсутствует в jQuery.
источник
Если вы используете jQuery версии 3 (выпущенной в 2016 году), вам следует использовать,
JSON.parse()
потомуjQuery.parseJSON()
что она устарела .источник
Я не знаю о производительности, но определенно безопаснее использовать метод jQuery, потому что некоторые браузеры, такие как ie7 и ниже, могут не иметь встроенных функций JSON.
Все дело в совместимости, точно так же, как вы используете каждый метод jQuery вместо собственного
forEach
метода массива для итерации.источник
Что касается производительности , то наиболее актуальный ответ -
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 + если вы хотите обеспечить поддержку очень старых браузеров (обычно не рекомендуется ).
источник
jQuery используется
JSON.parse
для внутреннего анализа файла JSON, поэтому в большинстве случаев это не имеет никакого значения.Но некоторые из старых браузеров не поддерживают
JSON.parse
функциональность. В этом случае использованиеjQuery.parseJSON
полезно, поскольку jQuery может обрабатывать JSON с помощью своей собственной функции.ЗАМЕТКА:
источник