回答:
最新のブラウザーはすべて、ネイティブのJSONエンコード/デコード(Internet Explorer 8以降、Firefox 3.1以降、Safari 4以降、およびChrome 3以降)をサポートしています。基本的にJSON.parse(str)
は、JSON文字列を解析してstr
オブジェクトを返し、オブジェクトJSON.stringify(obj)
のJSON表現を返しますobj
。
MDN記事の詳細。
eval()
JSON文字列は絶対に使用しないでください。
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,
【musicfreakコメント延長】
jQueryを使用している場合は、parseJSONを使用します
var obj = jQuery.parseJSON(data)
内部的には、ブラウザーが.JSON.parseをサポートしているかどうかをチェックし、(利用可能な場合)ネイティブのwindow.JSON.parseを呼び出します。
そうでない場合は、それ自体を解析します。
このスレッドに遭遇した人のために、JSONオブジェクトをサポートするブラウザーの最新の決定的なリストについては、こちらをご覧ください。。簡単な一般的な答え-2013年以降に本当に重要なほとんどすべてのブラウザー。