Ale*_*xis 19 jquery parsing json
$.parseJSON("1")回报1.我希望这会抛出一个错误,因为这似乎不是形式的有效JSON:
{
"firstName": "John"
}
Run Code Online (Sandbox Code Playgroud)
为什么1解析正确?反正有没有让它反而引发错误.
Bar*_*art 13
您可以使用更好地处理数字解析parseInt().它会在成功时返回一个数字,否则返回NaN(非数字).
var a = parseInt('23');
isNan(a); // false
var b = parseInt('ab');
isNan(b); // true
Run Code Online (Sandbox Code Playgroud)
如果你看一下jQuery方法的来源,它会很快变得清晰.
因此,如果在您的情况下2.执行步骤,它将简单地返回,1即使它不是真正的JSON.
更新:
我很好奇原生如何JSON.parse 处理它并且它做同样的事情(返回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 );
},
Run Code Online (Sandbox Code Playgroud)
小智 5
parseJSON 实际上只是从格式良好的 json 字符串中返回 javascript 对象。json 格式不仅仅接受(关联)数组。它接受如下数据结构:
有关 json 的所有详细信息,请查看http://json.org/。
$.parseJSON("1") 实际上读取了一个有效的 javascript 数字 1,结果为 1