簡體   English   中英

僅javascript中的jQuery.parseJSON函數(無jQuery)

[英]`jQuery.parseJSON` function in only javascript (without jQuery)

我一直在尋找在JavaScript中執行jQuery.parseJSON的方法,該方法可解析json以返回JavaScript對象。 我無法使用jQuery,因為我構建的整個插件都是獨立的JS,並且到目前為止還沒有使用過jQuery。 JavaScript中是否已經提供了這類內容?

使用本機JSON對象(這是唯一一次正確地說“ JSON對象”,實際上是一個名為JSON的對象)來操縱JSON字符串。

https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Global_Objects/JSON

使用JSON.parse(yourJSONString); 序列化和JSON.stringify(yourJSONObject); 反序列化。

如果您查看第492行的jQuery核心源代碼 ,則jQuery.parseJSON只是JSON.parse的別名。

您可以使用大多數瀏覽器都支持的本機JSON對象 ,但是嘗試在IE7及更低版本的恐龍瀏覽器中使用它時會遇到問題。 可以選擇在此處包含一個模仿本機功能的獨立插件(JSON.js)。

簡短答案:

使用瀏覽器本機方法JSON.parse()

window.JSON.parse(jsonString);

長答案:

要使其在舊的瀏覽器中運行,您可以使用jQuery.parseJSON源代碼並刪除對jQuery本身的任何依賴關系。 這是一個有效的獨立版本:

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 );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM