jquery – 为什么一个数字有效json?

前端之家收集整理的这篇文章主要介绍了jquery – 为什么一个数字有效json?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
$ .parseJSON(“1”)返回1.我希望这会抛出一个错误,因为这似乎不是表单的有效JSON:
{
    "firstName": "John"
}

为什么1解析正确?有没有办法让这个抛出一个错误

解决方法

解析一下

您可以使用parseInt()更好地处理数字解析。否则返回一个成功的数字和NaN(不是数字)。

var a = parseInt('23');
isNan(a); // false

var b = parseInt('ab');
isNan(b); // true

为什么在jQuery中返回1

如果你看看jQuery方法的来源,它将会很快变得清晰。

>它将检查是否有原生支持JSON.parse。
>如果没有,它将创建一个匿名函数(带字符串体),它只返回JSON字符串中包含的数据并调用它。

所以如果在你的情况下,步骤2.执行它将简单地返回1,即使它不是真正的JSON。

更新:
我很好奇当地的JSON.parse would handle it和它做的同样的事情(返回1)。所以无论实现如何,你总是得到相同的结果。

显示图书馆:http://code.jquery.com/jquery-1.8.3.js

parseJSON: function( data ) {
    if ( !data || typeof data !== "string") {
        return null;
    }

    // Make sure leading/trailing whitespace is removed (IE can't handle it)
    data = jQuery.trim( data );

    // Attempt to parse using the native JSON parser first
    if ( window.JSON && window.JSON.parse ) {
        return window.JSON.parse( 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 ) )(); // Just returns JSON data.

    }
    jQuery.error( "Invalid JSON: " + data );
},

猜你在找的jQuery相关文章