jQuery.只有javascript中的parseJSON函数(没有jQuery)

`jQuery.parseJSON` function in only javascript (without jQuery)

本文关键字:jQuery 没有 函数 parseJSON 只有 javascript 中的      更新时间:2023-09-26

我正在寻找在JavaScript中解析json以返回JavaScript对象的jQuery.parseJSON的方法。我不能使用jQuery,因为我已经建立的整个插件是独立的JS,没有jQuery一直使用到现在。JavaScript中是否已经提供了这种功能?

使用本机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对象,这在大多数浏览器中都是支持的,但是当您尝试在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 );
}