jQuery.parseJSON
jsonを解析してJavaScriptオブジェクトを返すJavaScriptで実行するメソッドを探していました。私が構築したプラグイン全体がスタンドアロンJSであり、これまでjQueryが使用されていないため、jQueryを使用できません。JavaScriptですでに提供されているこの種のものはありますか?
3 に答える
ネイティブJSONオブジェクト(「JSONオブジェクト」と言うのが正しいのはこれが唯一の場合で、文字通り名前の付いたオブジェクトですJSON
)を使用してJSON文字列を操作します。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON
JSON.parse(yourJSONString);
シリアル化および逆シリアル化に使用しJSON.stringify(yourJSONObject);
ます。
492行目のjQueryコアソースを見ると、jQuery.parseJSON
は単なるエイリアスJSON.parse
です。
短い答え:
ブラウザのネイティブメソッドJSON.parse()を使用します
window.JSON.parse(jsonString);
長い答え:
古いブラウザで動作させるには、jQuery自体の ソースコードを取得してjQuery.parseJSON
依存関係を削除します。動作するスタンドアロンバージョンは次のとおりです。
function standaloneParseJson ( 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;
}
var rvalidchars = /^[\],:{}\s]*$/;
var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
var rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g;
var rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g;
if ( typeof data === "string" ) {
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = data.replace(/^\s+|\s+$/g, '');
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 ) )();
}
}
}
// Error code here
//jQuery.error( "Invalid JSON: " + data );
}
ほとんどのブラウザでサポートされているネイティブJSONオブジェクトを使用できますが、IE7以下などの恐竜ブラウザで使用しようとすると問題が発生します。ここにネイティブ機能を模倣するスタンドアロンプラグイン(JSON.js)を含めるオプションがあります。