[javascript] jQuery.parseJSON 대 JSON.parse

jQuery.parseJSONJSON.parse같은 작업을 수행하는 두 가지 기능은 다음과 같습니다. jQuery 라이브러리가 이미로드 된 경우 성능면에서를 jQuery.parseJSON사용하는 것보다을 사용하는 것이 더 낫 JSON.parse습니까?

그렇다면 그 이유는 무엇입니까? 아니라면 왜 안됩니까?



답변

다음은 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.


답변

jQuery에 따르면

브라우저가 JSON.parse의 기본 구현을 제공하는 경우 jQuery는이를 사용하여 문자열을 구문 분석합니다.

따라서 브라우저에 기본 구현이없는 경우 jQuery가 JSON 파서를 제공함을 의미합니다. 다음 은 JSON 기능이 있거나없는 브라우저 의 비교 차트 입니다.


답변

JSON.parse ()는 기본적으로 다른 브라우저가 아닌 일부 브라우저에서 사용할 수 있으므로 라이브러리를 사용하는 것이 더 안전합니다. 다른 응답자들이 언급했듯이 JQuery 구현은 잘 작동합니다. 도 있습니다 더글라스 크록 포드의 JSON 라이브러리 를 사용할 경우 기본 구현을 사용합니다.

JSON 라이브러리는 JavaScript 객체를 현재 jQuery에서 누락 된 JSON 문자열로 변환하는 방법이 있다는 장점이 있습니다.


답변

jQuery 버전 3 (2016 년에 출시됨)을 사용하는 경우 가 deprecatedJSON.parse() 되었기 때문에 사용해야합니다 .jQuery.parseJSON()

jQuery 3.0부터 $ .parseJSON은 더 이상 사용되지 않습니다. JSON 객체를 구문 분석하려면 대신 기본 JSON.parse 메서드를 사용합니다.


답변

성능에 대해서는 모르지만 ie7 이하와 같은 일부 브라우저에는 기본적으로 JSON 기능이 없을 수 있으므로 jQuery 메서드를 사용하는 것이 확실히 더 안전합니다. 반복을 위해
배열의 기본 forEach메서드 대신 jQuery의 각 메서드를 사용하는 것처럼 호환성에 관한 것입니다 .


답변

성능 에 대해 말하면 가장 최근의 답변은 JSON.parse입니다.

기본 JSON 객체는 요즘 모든 브라우저 에서 지원 되므로 . 여기에서 지원 테이블을 볼 수 있습니다 : http://caniuse.com/#feat=jsonJSON.parse

GitHub의 JQuery 저장소에서이 별칭 모양을 검색 할 수도 있습니다. https://github.com/jquery/jquery/search?utf8=%E2%9C%93&q=parseJSON

또한, jQuery.parseJson되지 여기에 다른 답변에서 언급 한 바와 같이 3.0 이상 버전에.

아주 오래된 브라우저에 대한 지원을 제공하려는 경우 (일반적으로 권장하지 않음 ) 이전 JQuery 버전 + 인 경우에만 jQuery 버전을 사용해야합니다 .


답변

jQuery는 내부적으로 JSON.parseJSON 파일을 구문 분석하는 데 사용하므로 대부분의 경우 차이가 없습니다.

그러나 일부 구형 브라우저는 JSON.parse기능을 지원하지 않습니다.jQuery.parseJSON jQuery가 자체 기능을 사용하여 JSON을 처리 할 수 ​​있으므로 하면 유용합니다.

노트:

jQuery.parseJSONjQuery 3.0에서 더 이상 사용되지 않으므로 기본 JSON.parse방법을 사용하십시오 .