[javascript] 브라우저 네이티브 JSON 지원 (window.JSON)

window.JSONObject 를 통해 안전하고 효율적으로 객체의 JSON 구문 분석 / 직렬화를 기본적으로 지원하는 일부 브라우저에 대한 참조를 보았지만 세부 정보를 얻기가 어렵습니다. 누구든지 올바른 방향을 가리킬 수 있습니까? 이 Object가 노출하는 메서드는 무엇입니까? 어떤 브라우저에서 지원됩니까?



답변

모든 최신 브라우저는 네이티브 JSON 인코딩 / 디코딩 (Internet Explorer 8+, Firefox 3.1+, Safari 4+ 및 Chrome 3+)을 지원합니다. 기본적으로 JSON.parse(str)JSON 문자열을 구문 분석하고 str객체를 반환하고 객체 JSON.stringify(obj)의 JSON 표현을 반환합니다 obj.

MDN 기사 에 대한 자세한 내용 .


답변

jQuery-1.7.1.js-555 라인 …

parseJSON: function( data ) {
    if ( typeof data !== "string" || !data ) {
        return null;
    }

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

    // Attempt to parse using the native JSON parser first
    if ( window.JSON && window.JSON.parse ) {
        return window.JSON.parse( 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 );
}





rvalidchars = /^[\],:{}\s]*$/,

rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,

rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,

rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,


답변

json2.js 사용의 장점은 브라우저에 아직 파서가없는 경우에만 파서가 설치된다는 것입니다. 이전 브라우저와의 호환성을 유지할 수 있지만 가능한 경우 기본 JSON 구문 분석기 (더 안전하고 빠름)를 사용하십시오.

네이티브 JSON을 사용하는 브라우저 :

  • IE8 +
  • Firefox 3.1 이상
  • Safari 4.0.3 이상
  • Opera 10.5 이상

지.


답변

[ musicfreak 댓글 확장 ]

jQuery를 사용하는 경우 parseJSON을 사용 하십시오.

var obj = jQuery.parseJSON(data)

내부적으로 브라우저가 .JSON.parse를 지원하는지 확인하고 (사용 가능한 경우) 네이티브 window.JSON.parse를 호출합니다.

그렇지 않은 경우 자체를 구문 분석합니다.


답변

이 스레드를 사용하는 모든 사람의 이익을 위해-JSON 객체를 지원하는 최신 브라우저 목록은 여기를 참조하세요. . 간단한 일반적인 답변-2013 년 이후에 정말로 중요한 거의 모든 브라우저.


답변