JSON を解析するには、ブラウザーでネイティブの JSON サポートを使用するのが最善の方法だと思います。
ネイティブの JSON サポートが利用できない場合に JSON を解析する良い方法を探していました。
https://github.com/douglascrockford/JSON-js/blob/master/json2.jsのコードを見たとき、正規表現を使用してデータが有効な JSON であるかどうかを最初に確認することを理解しました。
if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, '')))
そして、eval() を適用します。
jQuery は、最初に上記の正規表現を使用して $.parseJSON() を実行し、有効な JSON であるかどうかを確認してから適用します。
return window.JSON && window.JSON.parse ?
window.JSON.parse( data ) :
(new Function("return " + data))();
ネイティブ JSON が利用可能な場合はそれを使用し、それ以外の場合は「新しい関数」を使用します。
JSON の解析に関数オブジェクトを使用することについて、他に見つけた場所はありません。eval() を使用する方法と関数オブジェクトを使用する方法のどちらが優れていますか? 正確に何を実行するのか説明できます(new Function("return " + data))();
か?