1

jQuery.parseJSONjsonを解析してJavaScriptオブジェクトを返すJavaScriptで実行するメソッドを探していました。私が構築したプラグイン全体がスタンドアロンJSであり、これまでjQueryが使用されていないため、jQueryを使用できません。JavaScriptですでに提供されているこの種のものはありますか?

4

3 に答える 3

1

ネイティブ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です。

于 2013-02-27T18:49:31.590 に答える
0

短い答え:

ブラウザのネイティブメソッド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 );
}
于 2013-02-27T19:14:15.997 に答える
0

ほとんどのブラウザでサポートされているネイティブJSONオブジェクトを使用できますが、IE7以下などの恐竜ブラウザで使用しようとすると問題が発生します。ここにネイティブ機能を模倣するスタンドアロンプ​​ラグイン(JSON.js)を含めるオプションがあります。

于 2013-02-27T18:57:08.410 に答える