今天在面試的時候,面試官問到js對象與json字符串的互轉問題,由於自己平時在用的時候沒有在意,而且在工作中由於用的較少,沒有答上來,所以今天特地查查資料複習一下, 鞏固一下這方面的知識。
1、js對象轉換成json字符串
在與後端進行交互時,有時需要把js對象轉換成json字符串格式,這時我們需要去引用一下json2.js這個文件,然後調用JSON.stringify()方法。例如:
var data = new Object(); var jsonData = JSON.stringify(data);
2、json字符串轉換成js對象
在工作中在ajax獲取後端數據時,獲取到的是json格式,有時就需要我們轉換成js對象格式。在這裏我們使用jQuery的一個$.parseJSON()方法將JSON格式的數據轉換成js對象格式。例如:
var jsonData = $.getJSON(); var data = $.parseJSON(jsonData);
當然,還可以使用JSON.parse()方法,方法同上,但是有的瀏覽器對JSON.parse()的支持不是很理想,所以在使用時儘量使用
parseJSON: function( 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;
}
if ( typeof data === "string" ) {
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim( data );
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 ) )();
}
}
}
jQuery.error( "Invalid JSON: " + data );
},
這樣就完成了js對象與JSON字符串的互轉了。