[javascript] 브라우저 네이티브 JSON 지원 (window.JSON)
window.JSON
Object 를 통해 안전하고 효율적으로 객체의 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 년 이후에 정말로 중요한 거의 모든 브라우저.